要在accuracy_score()中包含哪些项目以查找分类问题的准确性

时间:2017-03-12 16:37:56

标签: python machine-learning scikit-learn classification evaluation

我有这个训练和测试数据来预测测试数据的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,因为我已经习惯于改进预测。

1 个答案:

答案 0 :(得分:0)

您指定的分类指标将目标的实际值和从模型预测的值作为输入来计算特定指标。您可以在this page上获取有关sklearn指标的更多信息。

例如,documentation of accuracy_score()指定您应提供y_truey_pred

在您的情况下,y_pred应为test_data_predict,而y_true应为Item_Outlet_Salestest_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)