( sinexton | 2022. 07. 11., h – 18:13 )

Miért nem tanítasz rá egy RF modellt ahogy írtam feljebb feature vektorokkal? Pyhon-ban nagyon könnyű. Nem láthatjuk emberként hogy tud-e találni összefüggést. Vagy tudja javítani az eredményt, vagy nem, de ennél erősebb modell nincs aminél nem kell hiper paraméter tuningolás és érzéketlen a túltanításra:

https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.Rand…

Egy classification problémának tervezném meg így hamar gyorsan. Sajnos pár percnél több időm nincs rá, mint amennyi ideig megírom ezt.

Tehát feljebbi módon csinálsz rengeteg feature vektort. Ezek lesznek a bemeneti változók x1, x2, x3 ... xn néven. A kimeneti válasz egy integer, mely azt mutatja, hogy mennyi ékezet kellene a keresett ékezet nélküli szóba. Lehetne bináris értékbe is pakolni, hogy hányadik magánhangzón legyen ékezet, például az 5-ös értéke 101 bináris, vagy 1. és 3. magánhangzóba kell, de ezt inkább ne egyelőre.

Nincs sok időm rá, én megpróbálnám az ékezetek számát kitaláltatni az AI-al. Tehát a tanító adat így néz ki:

[ y, x1, x2, x3, ..., xn ],

[ y, x1, x2, x3, ..., xn ],

[ y, x1, x2, x3, ..., xn ],

[ y, x1, x2, x3, ..., xn ],

[ y, x1, x2, x3, ..., xn ],

...

Amire pedig kérdezünk, az így néz ki:

[ ?, x1, x2, x3, ..., xn ]

Ennél nyilván csak a választ nem tudjuk.

Az x változók pedig lehetnek:

- szavak közti távolság (https://en.wikipedia.org/wiki/Levenshtein_distance)

- mennyi ékezetes betű van mindegyikben, például ezek összege

- mennyi magánhangzó van bennük

- mennyi mássalhangzó van bennük

- magán vagy mással hangzóval kezdődnek (lehet 0 és 1 érték ez)

meg még ami eszedbe jut. Tele pakolhatnád még egyébbel. Próbálj minél trükkösebb feature-öket létrehozni.

Y változók pedig az ékezetek valós számát mutatják. Kivéve az utolsó sor első oszlopában, aminek mindegy mi az értéke, ezért lehet 0. Ezt akarjuk kitalálni.

 

Tuningolni ne tuningold az RF modellt, nem kell. Ez az egyetlen aminél nincs rá szükség, így nem is vesz el rengeteg időt a kombinációs tér bejárása. Alapból jó teljesítményt fog hozni.

Hogy tud-e segíteni gondolkodni a fenti feature vektorokból, azt nem tudjuk előre.

Írtam neked gyorsan egy példa kódot, ebbe dobáld be amit kell és meglátod milyen válaszokat ad. Előtte "pip3 install scikit-learn":

 

# example data for xor values, firt column is target
# rest is feature vectors, last row is the question
data = [ [0,0,0], [0,1,1], [1,1,0], [1,0,1], [0,0.2,0.7] ]

# separate data as input and target
x, y = [], []
for i, v in enumerate(data[:-1]):
	y.append( v[0] )
	x.append( v[1:] )
x2 = []
for i, v in enumerate(data[-1:]):
	x2.append( v[1:] )

# import model
from sklearn.ensemble import RandomForestClassifier
# select model
clf = RandomForestClassifier()
# train model
clf.fit( x, y )
# ask model
res = clf.predict( x2 ).tolist()

# print result
print( res[0] )

 

( Ez válaszként 1-et ad, mert az áll a legközelebb. )