1.数据来源:
本次scikit-learn回归分析系列教程使用经典的房价预测数据集。它是常用的回归分析数据集。
房价预测数据集:
- 21613个样本
- 每个样本有18个特征,如卧室个数、浴室个数、客厅面积等;
- 房价为需要预测的值。
数据格式如下所示:
2.思路:
通过加权求和该样本的特征值及偏置项计算其结果并作为预测值。
2.1 线型拟合模型表示
2.2 如何求参数
通过最小二乘法找出适合的参数,被选择的参数,应该使拟合出的预测值曲线与观测值(真实值)之差的平方和最小,该值也叫做残差平方和(residual sum of squares ,RSS)。
2.3 使用方法
LinearRegression(),声明模型
fit()训练模型,找出最优的参数
score()在测试集上评价模型
2.4 评价指标
又称确定系数,表示线型方程中变量x对y的解释程度,
取值在0到1之间,约接近于1,标明方程中x对y的解释能力越强,模型越好。
3.代码:
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
import ai_utils
data_file = './data/house_data.csv'
# 使用的特征列
FEAT_COLS = ['bedrooms', 'bathrooms', 'sqft_living', 'sqft_lot', 'sqft_above', 'sqft_basement']
def main():
"""
主函数
"""
# 读取数据
house_data = pd.read_csv(data_file,usecols=FEAT_COLS + ['price'])
# 可视化特征列
ai_utils.plot_feat_and_price(house_data)
# 获取数据集特征
X = house_data[FEAT_COLS].values
# 获取数据标签
y = house_data['price'].values
# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=1/3,random_state=10)
# 建立线性回归模型
linear_model = LinearRegression()
# 训练模型
linear_model.fit(X_train,y_train)
# 评价模型
r2 = linear_model.score(X_test,y_test)
print('模型的R2值为',r2)
# 获取单个样本的放假预测值
idx = 10
# 获取特征
test_sample_ferture = X_test[idx,:]
# 获取真实值
y_true = y_test[idx]
# 获取预测值
y_predict = linear_model.predict([test_sample_ferture])
print('样本的特征:',test_sample_ferture)
print('样本的真实值为{},预测值为{}'.format(y_true,y_predict))
if __name__ == '__main__':
main()
4.输出结果:
模型的R2值为 0.5058817864948668
样本的特征: [3.00e+00 2.50e+00 2.65e+03 9.38e+03 1.68e+03 9.70e+02]
样本的真实值为590000.0,预测值为[757994.606109]