【发布时间】:2018-08-07 06:49:02
【问题描述】:
我试图预测每部电影在 IMDb 上的利润。
我的数据框和特征如下:
Actor1 Actor2 Actor3 Actor4 Day Director Genre1 Genre2 Genre3 \
0 0 0 0 0 19.0 0 0 0 0
1 1 1 1 1 6.0 1 1 1 1
2 2 2 2 2 20.0 2 0 2 2
3 3 3 3 3 9.0 3 2 0 -1
4 4 4 4 4 9.0 4 3 3 3
Language Month Production Rated Runtime Writer Year BoxOffice
0 1 0 0 0 118.0 0 2007.0 37500000.0
1 2 1 1 0 151.0 1 2006.0 132300000.0
2 1 1 2 1 130.0 2 2006.0 53100000.0
3 1 2 1 0 117.0 3 2007.0 210500000.0
4 4 3 3 2 117.0 4 2006.0 244052771.0
我试图预测的值(目标)是 BoxOffice。
我正在按照原样关注 sklearn 的文档 (http://scikit-learn.org/stable/modules/generated/sklearn.metrics.mean_squared_error.html#sklearn.metrics.mean_squared_error)
from sklearn import preprocessing, linear_model
from sklearn.metrics import mean_squared_error, r2_score
from sklearn.model_selection import train_test_split, cross_val_score
X = dataset[:,0:16] # Features
Y = dataset[:,16] #Target
X_train, X_test, Y_train, Y_test = train_test_split(X,Y, test_size=0.33)
regr = linear_model.LinearRegression()
regr.fit(X_train,Y_train)
mean_squared_error(Y_test, regr.predict(X_test))
并且输出总是类似于:11385650623660550($11,385,650,623,660,500.00)
虽然 BoxOffice 的平均值为: 107989121
等等。
我尝试了多种不同的方法、交叉验证以及其他模型 (keras),感觉我已经尝试了所有方法。
返回的总和非常高,这让我怀疑问题不在于模型或数据,而是我缺少的其他东西。
【问题讨论】:
-
您的模型似乎总是在猜测 0,这会导致非常高的 MSE。您提供的误差值的平方根正好在您规定的平均值附近。
-
您好,我不认为是这种情况,因为如果我打印单个 preidcitions:a = regr.predict(X_test) print(a[0]) 我会得到例如:96267029
-
也许你的模型真的很糟糕 :( MSE 很容易计算,你可以自己确认
mean_squared_error的输出来验证。这个错误与你的数据的数量级相匹配。不是不合理高考虑数据并假设一个可怕的模型。 -
如中,没有什么可以从数据中学习的吗?与票房无关?在最坏的情况下,我难道不能为我的数据过度拟合我的模型并获得某种准确性吗?
-
当前模型表现不佳的事实并不意味着没有什么可学的。您可以生成完美的线性数据,但仍然可以生成大量错误率极低的模型。这只是意味着需要调整一些东西。
标签: python machine-learning scikit-learn linear-regression