监督学习:回归

机器学习:监督学习

回归分析

回归:统计学分析数据的方法,目的在于了解两个或多个变数间是否相关、研究其相关方向与强度,并建立数学模型以便观察特定变数来预测研究者感兴趣的变数。回归分析可以帮助人们了解在自变量变化时因变量的变化量。一般来说,通过回归分析我们可以由给出的自变量估计因变量的条件期望。

目标:对房屋成交信息建立回归方程,并依据回归方程对房屋价格进行预测

线性回归

背景:与房价密切相关的除了单位的房价,还有房屋的尺寸。我们可以根据已知的房屋成交价和房屋的尺寸进行线性回归,继而可以对已知房屋尺寸,而未知房屋成交价格的实例进行成交价格的预测。

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]))
    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()

linear regression

多项式回归

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]))
    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)
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()

polynomial regression

岭回归

岭回归是一种专门用于共线性数据分析的有偏估计回归方法,是一种改良的最小二乘法,对某些数据的拟合强于最小二乘法

import numpy as np
from sklearn.linear_model import Ridge#调用岭回归算法
from sklearn import model_selection#加载交叉验证模块
import matplotlib.pyplot as plt
from sklearn.preprocessing import PolynomialFeatures#通过PolynomialFeatures创建多项式特征
data_path = ("ridge regression.csv")
data = np.genfromtxt(data_path,delimiter=',',skip_header=1,usecols=(1,2,3,4,5))#使用numpy方法读取数据,skip_header:跳过前n行
plt.subplot(211)
plt.plot(data[:,4])
X = data[:,:4]
Y = data[:,4]
poly = PolynomialFeatures(6)#创建最高次数为6次方的多项式
X = poly.fit_transform(X)

train_x,test_x,train_y,test_y = model_selection.train_test_split(X,Y,test_size = 0.3,
                                                                  random_state = 0)
#将数据分为训练集和测试集,test_size表示测试集的比例,random_state表示随机数种子

#创建回归器,并进行训练
clf = Ridge(alpha=1.0,fit_intercept=True)#创建岭回归
clf.fit(train_x,train_y)#对回归器进行训练
clf.score(test_x,test_y)#利用测试集计算回归曲线的拟合优度
#拟合优度:评价拟合的好坏,最大为1,无最小值。
#绘制拟合曲线
start = 200
end = 300
y_pre = clf.predict(X)
time = np.arange(start,end)
plt.subplot(212)
plt.plot(time,Y[start:end],'b',label='real')
plt.plot(time,y_pre[start:end],'r',label='predict')
plt.legend(loc="upper left")
plt.show()

ridge regression

model_selection类中集成了很多模块
sklearn库中的model_selection类

本文所用数据文件
下载链接:https://pan.baidu.com/s/1IV9oipnK_kn5AKTQjVAhoA
提取码:6hds

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值