样本数量不一致 K 最近邻 sklearn
Inconsistent number of samples K Nearest Neighbor sklearn
我正在对来自 guidetodatamining.com 的东西进行一些自我训练,并且正在使用 sklearn 处理一些 K 最近邻的东西。我收到错误:ValueError:找到样本数量不一致的输入变量:[2, 20]
当我运行这段代码时:
import pandas as pd
from sklearn.neighbors import KNeighborsClassifier
cols= ['Name', 'Sport', 'Height', 'Weight']
df = pd.read_table("https://raw.githubusercontent.com/zacharski/pg2dm-python/master/data/ch4/athletesTrainingSet.txt", names = cols, index_col='Name')
df = df[1:]
df = df[ ['Height', 'Weight','Sport'] ]
knn = KNeighborsClassifier(n_neighbors=2)
X= df.Height, df.Weight
y = df.Sport
knn.fit(X, y)
knn.predict(X)
在数据集中,三行各有 20 个,所以我不知道发生了什么。
我正在尝试使用 Height 和 Weight 的朋友来帮助训练 Sport 领域,这样如果你把一些数据放在里面 "recommends" 一个人会玩什么运动。我知道有几个关于 LinearRegression 工具的类似主题,但我无法获得任何适合我的解决方案。我试过重塑我的数据,我试过只做身高或体重,但这给了我一个一维而不是二维数组的错误。
即使只是朝着正确的方向进行有用的推动也会非常有帮助,因为我已经盯着这个看了 2 天了,现在还没有解决方案。谢谢。
您的问题出在您的 x,y 创作中。 x 是两个 pandas 数据系列,y 只是一个系列。创建两个新数据框可以解决您的问题。您可以 运行 您的代码逐行定位。
x= df[["Height","Weight"]]
y = df[["Sport"]]
您可以尝试将数据集拆分成多个集合。您的模型可以在一组上训练并在另一组上进行验证。
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(x,y,test_size=0.2)
knn.fit(X_train, y_train)
knn.predict(X_test)
您可以将目标值和预测保存到数据框中并进行检查。
comp_results=pd.concat([y_test,pd.DataFrame(data=knn.predict(X_test),index=y_test.index.values.tolist())],axis =1).rename(columns={"Sport":"Target",0:"Prediction"})
我正在对来自 guidetodatamining.com 的东西进行一些自我训练,并且正在使用 sklearn 处理一些 K 最近邻的东西。我收到错误:ValueError:找到样本数量不一致的输入变量:[2, 20]
当我运行这段代码时:
import pandas as pd
from sklearn.neighbors import KNeighborsClassifier
cols= ['Name', 'Sport', 'Height', 'Weight']
df = pd.read_table("https://raw.githubusercontent.com/zacharski/pg2dm-python/master/data/ch4/athletesTrainingSet.txt", names = cols, index_col='Name')
df = df[1:]
df = df[ ['Height', 'Weight','Sport'] ]
knn = KNeighborsClassifier(n_neighbors=2)
X= df.Height, df.Weight
y = df.Sport
knn.fit(X, y)
knn.predict(X)
在数据集中,三行各有 20 个,所以我不知道发生了什么。 我正在尝试使用 Height 和 Weight 的朋友来帮助训练 Sport 领域,这样如果你把一些数据放在里面 "recommends" 一个人会玩什么运动。我知道有几个关于 LinearRegression 工具的类似主题,但我无法获得任何适合我的解决方案。我试过重塑我的数据,我试过只做身高或体重,但这给了我一个一维而不是二维数组的错误。
即使只是朝着正确的方向进行有用的推动也会非常有帮助,因为我已经盯着这个看了 2 天了,现在还没有解决方案。谢谢。
您的问题出在您的 x,y 创作中。 x 是两个 pandas 数据系列,y 只是一个系列。创建两个新数据框可以解决您的问题。您可以 运行 您的代码逐行定位。
x= df[["Height","Weight"]]
y = df[["Sport"]]
您可以尝试将数据集拆分成多个集合。您的模型可以在一组上训练并在另一组上进行验证。
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(x,y,test_size=0.2)
knn.fit(X_train, y_train)
knn.predict(X_test)
您可以将目标值和预测保存到数据框中并进行检查。
comp_results=pd.concat([y_test,pd.DataFrame(data=knn.predict(X_test),index=y_test.index.values.tolist())],axis =1).rename(columns={"Sport":"Target",0:"Prediction"})