我有这个训练和测试数据来预测测试数据的Item_outlet_sales的值。这是train_data_df和test _data_df。
Train_data_df
Item_Weight Item_Visibility Item_MRP Item_Outlet_Sales
Item_Identifier
FDA15 9.30 0.016047 249.8092 3735.1380
DRC01 5.92 0.019278 48.2692 443.4228
FDN15 17.50 0.016760 141.6180 2097.2700
FDX07 19.20 0.000000 182.0950 732.3800
NCD19 8.93 0.000000 53.8614 994.7052
Tesst_data_df
Item_Weight Item_Visibility Item_MRP
Item_Identifier
FDW58 20.750 0.007565 107.8622
FDW14 8.300 0.038428 87.3198
NCN55 14.600 0.099575 241.7538
FDQ58 7.315 0.015388 155.0340
FDY38 -999 0.118599 234.2300
我只包含了数字列并删除了不必要的列。
代码预测测试数据的值,但我对如何预测这些预测值的准确性,精确度,召回率,f1分数感到困惑。
import pandas as pd
import sklearn
import matplotlib.pyplot as plt
from sklearn import preprocessing,cross_validation, svm,neighbors
from sklearn.naive_bayes import GaussianNB
import numpy as np
from sklearn.metrics import accuracy_score, f1_score, precision_score, recall_score, classification_report, confusion_matrix,mean_squared_error
train_data_df= train_data_df.drop(['Item_Type','Outlet_Identifier','Item_Fat_Content','Outlet_Size','Outlet_Establishment_Year','Outlet_Location_Type','Outlet_Type','Item_Type'],axis=1)
test_data_df= test_data_df.drop(['Item_Type','Outlet_Identifier','Item_Fat_Content','Outlet_Size','Outlet_Location_Type','Outlet_Establishment_Year','Outlet_Type','Item_Type'],axis=1)
train_data_df.fillna(-999,inplace=True)
test_data_df.fillna(-999,inplace=True)
X = np.array(train_data_df.drop(['Item_Outlet_Sales'], axis=1 ),dtype=np.int64)
y= np.array(train_data_df['Item_Outlet_Sales'],dtype=np.int64)
test_data_df = np.array(test_data_df)
X_train,X_test,y_train,y_test_0= cross_validation.train_test_split(X,y,test_size=0.6665)
clf =neighbors.KNeighborsClassifier()
clf.fit(X_train,y_train)
test_data_predict = clf.predict(test_data_df)
print test_data_predict
现在我应该在accuracy_score()和其他分数中加以计算。我想一个是test_data_predict。我是否需要包含cross_validation,因为我已经习惯于改进预测。
答案 0 :(得分:0)
您指定的分类指标将目标的实际值和从模型预测的值作为输入来计算特定指标。您可以在this page上获取有关sklearn指标的更多信息。
例如,documentation of accuracy_score()指定您应提供y_true
和y_pred
。
在您的情况下,y_pred
应为test_data_predict
,而y_true
应为Item_Outlet_Sales
列test_data_df
的值。但是你没有在你的问题中指明它们。
另外,关于你问题中的这四行: -
X_train,X_test,y_train,y_test_0=cross_validation.train_test_split(X,y,
test_size=0.6665)
clf =neighbors.KNeighborsClassifier()
clf.fit(X_train,y_train)
X_test_predict =clf.predict(X_test)
X_test_predict
也可用于查找准确性,但这仅用于交叉验证,以查看您的估算工具是否过度拟合培训数据。
accuracy = accuracy_score(y_test_0, X_test_predict)