我正在查看我在网上找到的一些房地产数据。我用Python建立了一个模型;所有代码如下所示。所有数据均来自纽约市,例如邮政编码,手数,商业,住宅和其他一些指标。我正在尝试基于各种因素来预测可能开发商业房地产地段的“目标”变量。
import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
# Load data
train = pd.read_csv('C:\\Users\\Excel\\Desktop\\train.csv')
test = pd.read_csv('C:\\Users\\Excel\\Desktop\\test.csv')
df = pd.concat([train,test],axis=0) #Combined both Train and Test Data set
df.shape
pd.set_option('display.max_columns', None)
# fill in NANs.
df = df.fillna(0)
print('Data frame:', df)
# convert to numbers
df = df.select_dtypes(include=[np.number])
# Get all the columns from the dataframe.
columns = df.columns.tolist()
# Filter the columns to remove ones we don't want to use in the training
columns = [c for c in columns if c not in ['target']]
# Store the variable we'll be predicting on.
target = 'target'
train['target'] = 0
# Generate the training set. Set random_state to be able to replicate results.
train = df.sample(frac=0.8, random_state=1)
# Select anything not in the training set and put it in the testing set.
test = df.loc[~df.index.isin(train.index)]
# Print the shapes of both sets.
print('Training set shape:', train.shape)
print('Testing set shape:', test.shape)
# Initialize the model class.
lin_model = LinearRegression()
# Fit the model to the training data.
lin_model.fit(train[columns], train[target])
# Generate our predictions for the test set.
lin_predictions = lin_model.predict(test[columns])
print('Predictions:', lin_predictions)
# Compute error between our test predictions and the actual values.
lin_mse = mean_squared_error(lin_predictions, test[target])
print('Computed error:', lin_mse)
此行抛出错误:
lin_model.fit(train[columns], train[target])
这是错误消息:
KeyError: 'target'
基本上,“目标”字段未出现在以下位置:train[target]
即使我在其中添加字段,投影也始终为0 !!!我肯定想念一些简单的东西,但我不确定是什么。
我从这里开始跟随示例,但是使用了完全不同的数据集。
https://microsoft.github.io/sql-ml-tutorials/python/rentalprediction/step/2.html
使用此代码段,我可以得出因素的“特征重要性”。
# Create a new matplotlib figure
fig = plt.figure()
ax = fig.add_subplot()
viz = FeatureImportances(GradientBoostingClassifier(), ax=ax)
viz.fit(X, y)
viz.poof()
答案 0 :(得分:2)
我想添加评论,但还没有。为什么要使用线性回归来预测我认为是二元变量的变量?请改用物流。这行也是什么:columns = [c for c in columns if c not in ['target']]
['target']来自哪里?另外,train['target'] = 0
会将整个列设置为0,即使您要重新分配列值,也应该使用df.loc方法。这就是为什么将所有预测值都设为零的原因,因为目标是您的因变量,并且所有值都设置为0。
答案 1 :(得分:2)
如果您输入了代码,则火车集中的所有样本的输出/目标= 0
train['target'] = 0
然后该算法将学习到,不管模型中具有什么功能,预测都应该始终为0。
查看为什么需要将其设置为0。这行似乎是不必要的。尝试删除该行并运行模型。