繁体   English   中英

使用Scikit-Learn进行多元分类和回归模型的准确性

[英]Accuracy of multivariate classification and regression models with Scikit-Learn

我写了一个简单的线性回归模型和一个决策树模型,它们很好地工作。 我的问题是,如何计算这两个模型的准确性。 我的意思是,计算分类模型和回归模型的准确性之间有什么区别? 我是否需要将数据拆分为训练和测试?

直到现在,我.score(x_test, y_test)使用.score(x_test, y_test)但我读到那不是模型的准确性。 我尝试使用指标,但总是收到此错误:

ValueError: Found input variables with inconsistent numbers of samples: [2, 1]

请检查我的代码,我试图使其正常运行,但失败了。

这是代码:

import pandas as pd
from sklearn import linear_model
from sklearn import tree
from sklearn.model_selection import train_test_split

from sklearn.metrics import accuracy_score
from sklearn.metrics import mean_squared_error


dic = {'par_1': [10, 30, 13, 19, 25, 33, 23],
       'par_2': [1, 3, 1, 2, 3, 3, 2],
       'outcome': [101, 905, 182, 268, 646, 624, 465]}

df = pd.DataFrame(dic)

variables = df.iloc[:,:-1]
results = df.iloc[:,-1]

var_train, var_test, res_train, res_test = train_test_split(variables, results, test_size = 0.2, random_state = 4)

regression = linear_model.LinearRegression()
regression.fit(var_train, res_train)

input_values = [14, 2]

prediction = regression.predict([input_values])
print(prediction)

accuracy_regression = mean_squared_error(var_test, prediction)
print(accuracy_regression)


dic = {'par_1': [10, 30, 13, 19, 25, 33, 23],
       'par_2': [1, 3, 1, 2, 3, 3, 2],
       'outcome': ['yes', 'yes', 'no', 'yes', 'no', 'no', 'yes']}

df = pd.DataFrame(dic)

variables = df.iloc[:,:-1]
results = df.iloc[:,-1]

var_train, var_test, res_train, res_test = train_test_split(variables, results, test_size = 0.2, random_state = 4)

decision_tree = tree.DecisionTreeClassifier()
decision_tree.fit(var_train, res_train)

input_values = [18, 2]

prediction = decision_tree.predict([input_values])[0]
print(prediction)

accuracy_classification = accuracy_score(res_test, prediction)
print(accuracy_classification)

准确性是用于分类但不用于回归的度量。 在回归的情况下,可以使用R平方,负均方误差等。精度定义为正确分类为数据点总数的数据点数,在连续变量的情况下不使用。

您可以使用以下度量标准来度量回归模型的可预测性。 https://scikit-learn.org/stable/modules/classes.html#regression-metrics例如,您可以使用

metrics.r2_score(y_true, y_pred[, …])

另外,可以为分类模型实现以下内容。 https://scikit-learn.org/stable/modules/classes.html#classification-metrics精度可以使用

metrics.accuracy_score(y_true, y_pred[, …])

在您的情况下,您可以使用以下方法为回归模型计算R平方:

y_pred_test = regression.predict(x_test)
metrics.score(y_true, y_pred_test)

另外,以下内容还为您提供了决策树的准确性。

y_pred_test = decision_tree.predict(x_test)
metrics.accuracy_score(y_true, y_pred_test)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM