【问题标题】:Which items to include in accuracy_score() to find accuracy in classification problems在 accuracy_score() 中包含哪些项目以查找分类问题的准确性
【发布时间】:2017-08-02 16:00:22
【问题描述】:

我有这个训练和测试数据来预测测试数据的 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

Test_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,因为我已经习惯了改进预测。

【问题讨论】:

  • test_data_dfItem_Outlet_Sales 在哪里?

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


【解决方案1】:

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

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

在您的情况下,y_pred 应该是 test_data_predicty_true 应该是来自您的 test_data_df 的列 Item_Outlet_Sales 的值。但是您没有在问题中指定它们。

另外,关于你问题中的这四行:-

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)

【讨论】:

  • 是的,我错误地添加了 X_test predict。数据集中的值按原样出现,即测试数据没有 Item_Outlet_Sales 列。测试数据的值为8524个值中的5681个值。所以测试数据的 Item_outlet_sales 值在那里,但它们在训练数据中。所以我想我必须将那些 Item_Outlet_Sales 值从训练数据中获取相应的测试数据值与 test_data_predict 进行比较。我的意思是这就是我的想法,如果我错了,请纠正我
  • 我不明白 - “测试数据的值是 8524 个值中的 5681 个值。所以测试数据的 Item_outlet_sales 值在那里,但它们在训练数据中”。测试值如何在训练中进行
猜你喜欢
  • 2017-12-04
  • 1970-01-01
  • 1970-01-01
  • 2017-09-12
  • 1970-01-01
  • 2011-06-07
  • 2018-09-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多