我已从csv导入了一个数据集,其中包含英雄联盟游戏(https://www.kaggle.com/datasnaek/league-of-legends)的比赛统计信息。
我想在冠军ID和比赛结果上应用机器学习算法。
在列中列出每个冠军ID时,我创建了2个列表(t1,t2),其中包含每个团队成员的冠军ID。
但是当调用knn.fit时,我收到错误消息“ ValueError:设置具有序列的数组元素。”
如果我理解正确,那么KNN需要单个值而不是列表。
但是我不知道如何以拥有团队成员身份的另一种方式来对数据框进行建模。
data = pd.read_csv('resources/LoL/games.csv', delimiter=',')
data['t1'] = data[['t1_champ1id', 't1_champ2id', 't1_champ3id', 't1_champ4id', 't1_champ5id']].values.tolist()
data['t2'] = data[['t2_champ1id', 't2_champ2id', 't2_champ3id', 't2_champ4id', 't2_champ5id']].values.tolist()
reduceddata = pd.DataFrame(data[['t1', 't2']])
outcomes = data[['winner']]
X_train, X_test, Y_train, Y_test= train_test_split(reduceddata,outcomes['winner'], random_state=0)
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=1)
knn.fit(X_train, Y_train)
答案 0 :(得分:0)
我认为您只需要以这种方式选择列(功能):
reduceddata = data[['t1_champ1id', 't1_champ2id', 't1_champ3id', 't1_champ4id', 't1_champ5id', 't2_champ1id', 't2_champ2id', 't2_champ3id', 't2_champ4id', 't2_champ5id']]
outcomes = data['winner']
X_train, X_test, Y_train, Y_test= train_test_split(reduceddata, outcomes, random_state=0)