机器学习之有监督学习:回归

前置准备

详情请见我的上一篇博客

线性回归

机器学习之有监督学习:回归_第1张图片
机器学习之有监督学习:回归_第2张图片

多项式回归

机器学习之有监督学习:回归_第3张图片
机器学习之有监督学习:回归_第4张图片
机器学习之有监督学习:回归_第5张图片

房价与房屋尺寸的关系实例

线性回归法

实现机理

根据已知的房屋成交价和房屋尺寸进行线性回归,程序所需数据文件点此下载(提取码:BigG)

效果图

机器学习之有监督学习:回归_第6张图片

源代码

#线性回归.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)

效果图

机器学习之有监督学习:回归_第7张图片

源代码

#多项式回归.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()

注:本文是博主机器学习课程的心得总结,不支持任何商用且不支持转载!如果你也对机器学习有一定的兴趣和理解,欢迎随时找博主交流~

你可能感兴趣的:(我的机器学习之路,机器学习,python)