前置准备
详情请见我的上一篇博客
线性回归
多项式回归
房价与房屋尺寸的关系实例
线性回归法
实现机理
根据已知的房屋成交价和房屋尺寸进行线性回归,程序所需数据文件点此下载(提取码:BigG)
效果图
源代码
#线性回归.py
import matplotlib.pyplot as plt
import numpy as np
from sklearn import linear_model
# 读取数据集
datasets_X = [] #房屋尺寸
datasets_Y = [] #房屋价格
fr = open('prices.txt', 'r')
lines = fr.readlines() #一次性读取文件
for line in lines:
items = line.strip().split(',') #去除文件中逗号
datasets_X.append(int(items[0])) #将读取的数据转换为int型
datasets_Y.append(int(items[1]))
length = len(datasets_X) #数据总数
datasets_X = np.array(datasets_X).reshape([length, 1]) #转换为数组,变为二维,以符合线性回归拟合函数输入参数要求
datasets_Y = np.array(datasets_Y) #转换为数组
minX = min(datasets_X)
maxX = max(datasets_X)
X = np.arange(minX,maxX).reshape([-1, 1]) #建立等差数列,方便画图
linear = linear_model.LinearRegression() #调用线性回归模块,建立回归方程,拟合数据
linear.fit(datasets_X, datasets_Y)
# 图像中显示
plt.scatter(datasets_X, datasets_Y, color = 'red') #绘制数据点
plt.plot(X, linear.predict(X), color = 'blue') #绘制直线
plt.xlabel('Area')
plt.ylabel('Price')
plt.show()
多项式回归法
实现机理
根据已知的房屋成交价和房屋尺寸进行多项式回归,程序所需数据文件点此下载(提取码:BigG)
效果图
源代码
#多项式回归.py
import matplotlib.pyplot as plt
import numpy as np
from sklearn import linear_model
from sklearn.preprocessing import PolynomialFeatures
# 读取数据集
datasets_X = [] #房屋尺寸
datasets_Y = [] #房屋价格
fr = open('prices.txt', 'r')
lines = fr.readlines() #一次性读取文件
for line in lines:
items = line.strip().split(',') #去除文件中逗号
datasets_X.append(int(items[0])) #将读取的数据转换为int型
datasets_Y.append(int(items[1]))
length = len(datasets_X) #数据总数
datasets_X = np.array(datasets_X).reshape([length, 1]) #转换为数组,变为二维,以符合线性回归拟合函数输入参数要求
datasets_Y = np.array(datasets_Y) #转换为数组
minX = min(datasets_X)
maxX = max(datasets_X)
X = np.arange(minX,maxX).reshape([-1, 1]) #建立等差数列,方便画图
poly_reg = PolynomialFeatures(degree = 2) #degree=2表示建立datasets_X的二次多项式特征X_poly
X_poly = poly_reg.fit_transform(datasets_X)
lin_reg_2 = linear_model.LinearRegression()
lin_reg_2.fit(X_poly, datasets_Y)
# 图像中显示
plt.scatter(datasets_X, datasets_Y, color = 'red') #绘制数据点
plt.plot(X, lin_reg_2.predict(poly_reg.fit_transform(X)), color = 'blue') #绘制直线
plt.xlabel('Area')
plt.ylabel('Price')
plt.show()
注:本文是博主机器学习课程的心得总结,不支持任何商用且不支持转载!如果你也对机器学习有一定的兴趣和理解,欢迎随时找博主交流~