【发布时间】:2019-10-30 12:26:28
【问题描述】:
我写了一个简单的线性回归模型和一个决策树模型,它们工作得很好。 我的问题是,如何计算这两个模型的准确性。我的意思是,计算分类模型和回归模型的准确性有什么区别?我需要将数据拆分为训练和测试吗?
到目前为止,我一直在使用.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^2 分数等
-
你能看到我发布的代码吗?我使用
from sklearn.metrics import accuracy_score进行分类,使用 r2_score 进行回归,但总是出错。你能告诉我我做错了什么吗
标签: python machine-learning scikit-learn