我试图预测每部电影在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的文档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 :(得分:3)
我认为,你的问题与均方误差无关,它本身就是模型。
对于您的分类功能,我建议您尝试其他编码方法,如OneHotEncoder。 LabelEncoder不适合使用lineer回归。
(有关详细信息:http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.OneHotEncoder.html
https://hackernoon.com/what-is-one-hot-encoding-why-and-when-do-you-have-to-use-it-e3c6186d008f)
在训练模型之前,先看一下你的数字特征与你的目标变量的相关性,可能其中一些是不相关的,对于分类特征,你可以尝试不同的方法来分析它们与目标变量的关系(如箱形图)
Lineer回归需要连续变量,因此您可能还想尝试其他算法。在申请之前,请确保您有足够的背景。
答案 1 :(得分:1)
尝试标准化输出(或Y)变量并将它们置于0和1之间。
答案 2 :(得分:-2)
您可以检查模型的准确性吗?我猜它很低,因此你得到高均方误差。因为预测票房和实际之间模型差异的准确度很低而且非常高,并且它变得更大。
rgr.score(X_test,Y_test
)