Делаю модель для игры камень, ножницы, бумага. Модель готова, но она не точна и не может работать с ничьёй.
Как сделать модель более поточнее и научить её определять ничью. Если добавлять в тестовые значения ничью, то она совсем не работает.
import pandas as pd
df = pd.read_csv("test.csv")
def fill(row):
if row == 'stone':
return 1
elif row == 'shears':
return 2
elif row == 'paper':
return 3
df['player1'] = df['player1'].apply(fill)
df['player2'] = df['player2'].apply(fill)
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
x = df.drop("result", axis=1)
y = df['result']
sc = StandardScaler()
x_train = sc.fit_transform(x)
classifier = KNeighborsClassifier(n_neighbors=2)
classifier.fit(x_train, y)
mf = pd.read_csv("./train.csv")
mf['player1'] = mf['player1'].apply(fill)
mf['player2'] = mf['player2'].apply(fill)
result = classifier.predict(mf.values)
nf = pd.read_csv("./train.csv")
df = pd.DataFrame({
'player1':nf['player1'],
'player2':nf['player2'],
'result':result
})
df.to_csv('data.csv', index=False)
Данные для тренировки test.csv
player1,player2,result
stone,shears,1
stone,paper,2
shears,stone,2
shears,paper,1
paper,stone,1
paper,shears,2
stone,shears,1
stone,paper,2
stone,stone,0
paper,paper,0
shears,shears,0
Данные для проверки train.csv
player1,player2
stone,shears
stone,paper
shears,stone
shears,paper
paper,stone
stone,shears
stone,paper
shears,stone
shears,paper
paper,stone
stone,stone
paper,paper
shears,shears