首页人工智能Scikit-learn8.使用线性回归算法实现房...

8.使用线性回归算法实现房价预测

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]
RELATED ARTICLES

欢迎留下您的宝贵建议

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Recent Comments