我正在使用LinearRegression()
。您可以在下面看到我为预测新功能所做的工作:
lm = LinearRegression()
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.8, random_state=say)
lm.fit(X_train, y_train)
lm.predict(X_test)
scr = lm.score(X_test, y_test)
lm.fit(X, y)
pred = lm.predict(X_real)
我真的需要行lm.fit(X, y)
还是我可以不使用它?另外,如果我不需要计算准确度,您认为以下方法更好,而不是使用培训和测试吗? (如果我不想测试):
lm.fit(X, y)
pred = lm.predict(X_real)
即使我获得0.997的准确度,预测值也不会接近或移位。有没有办法让预测更准确?
答案 0 :(得分:2)
由于您的算法已经了解了您的列车集,因此您不需要多次拟合来预测给定要素的值。检查以下代码。
# Split your data into train and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.8, random_state=say)
# Teach your data to your algorithm with train set
lm = LinearRegression()
lm.fit(X_train, y_train)
# Now it can predict
pred = lm.predict(X_real)
# Use test set to see how accurate it predicts
scr = lm.score(X_test, y_test)
答案 1 :(得分:1)
您获得几乎100%准确度得分的原因是a data leakage,由以下代码行引起:
lm.fit(X, y)
在上面一行中,您为模型提供了所有数据,然后使用模型已经看到的数据子集测试预测。
这会导致已经看过的数据的准确度得分非常高,但通常会对看不见的数据造成严重影响。
您希望/需要何时适合您的模型多次次?
如果您要获取新的培训数据,并希望通过针对新部分数据进行培训来改进模型,那么您可能需要选择one of regression algorithm, supporting incremental-learning。
在这种情况下,您将使用model.partial_fit()方法而不是model.fit()
...