【发布时间】:2018-12-10 14:39:15
【问题描述】:
我尝试从头开始创建 KNN 算法。我的数据集是一个熊猫数据框。该算法总是返回 1.0(预测总是与实际结果完全匹配),我担心出了点问题,虽然我不知道是什么。非常感谢您对识别的任何帮助。
这是我的代码:
def get_neighbors(train,row,n):
distances=list()
for i in range(len(test)):
dist=euclidean_distance(row,train.iloc[i])
distances.append((row,dist))
distances.sort(key=lambda tup: tup[1])
neighbors=list()
for i in range(n):
neighbors.append(distances[i][0])
return neighbors
def predict_classification(train,row,n):
neighbors=get_neighbors(train,row, n)
output_values=[row.iloc[-1]for row in neighbors]
prediction=max(set(output_values),key=output_values.count)
return prediction
import math
def euclidean_distance(row1,row2):
distance = 0.0
for i in range((row1.shape[0])):
distance+=(row1[i] -row2[i]) ** 2
return math.sqrt(distance)
def k_nearest_neighbors(train,test,n):
predictions=list()
for i in range(len(test)):
output=predict_classification(train,test.iloc[i],n)
predictions.append(output)
return(predictions)
train=dataset.iloc[0:500]
test=dataset.iloc[500:600]
df=po.DataFrame()
df["Actual"]=test["Outcome"]
df["Predicted"]=k_nearest_neighbors(train,test,5)
【问题讨论】:
-
您确定您的数据不应该返回 100% 的预测。有些问题很容易解决!
标签: python pandas machine-learning knn