1.数据集
两列数据,分别是房屋面积和房屋价格
2.回归
回归的分类:一般分为线性回归(Linear Regression), 多项式回归(Ploynomial Regression), 岭回归(Ridge Regression),Lasso回归和弹性回归网络(ElasticNet Regression).具体介绍参考https://blog.csdn.net/u013181595/article/details/80517537
此次实验中仅使用线性回归(Linear Regression), 多项式回归(Ploynomial Regression)进行回归预测
3.代码实现
# -*- coding: utf-8 -*-
"""
Created on Mon Oct 28 15:49:09 2019
@author: zhang
"""
#线性回归
import numpy as np
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
dataset_X=[]
dataset_y=[]
f = open(***\机器学习\LinearRegression\prices.txt','r')
dataset = f.readlines()
for line in dataset:
item = line.split(',')
dataset_X.append(int(item[0]))
dataset_y.append(int(item[1]))
dataset_X = np.array(dataset_X).reshape([len(dataset_X),1])
dataset_y = np.array(dataset_y).reshape([len(dataset_X),1])
LR = LinearRegression()
LR.fit(dataset_X,dataset_y)
X_max=int(max(dataset_X))
X_min=int(min(dataset_y))
X = np.arange(X_min,X_max).reshape([-1,1])
ax =plt.subplot(211)
ax.scatter(dataset_X,dataset_y,c='r')
ax.plot(X,LR.predict(X),c='g')
ax.set_xlabel('sqare')
ax.set_ylabel('price')
ax.set_title('the relationshaip between sqare and price')
plt.show
#多项式回归
#这里仅有面积一项因此为一元多项式回归
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
import matplotlib.pyplot as plt
dataset_X=[]
dataset_y=[]
f = open(***\机器学习\LinearRegression\prices.txt','r')
dataset = f.readlines()
for line in dataset:
item = line.split(',')
dataset_X.append(int(item[0]))
dataset_y.append(int(item[1]))
dataset_X = np.array(dataset_X).reshape([len(dataset_X),1])
dataset_y = np.array(dataset_y).reshape([len(dataset_X),1])
poly_reg = PolynomialFeatures(degree = 2)
X_poly = poly_reg.fit_transform(dataset_X)
LR = LinearRegression()
LR.fit(X_poly,dataset_y)
X_max=int(max(dataset_X))
X_min=int(min(dataset_y))
X = np.arange(X_min,X_max).reshape([-1,1])
ax1 = plt.subplot(212)
ax1.scatter(dataset_X,dataset_y,c='r')
ax1.plot(X,LR.predict(poly_reg.fit_transform(X)),c='b')
ax1.set_xlabel('sqare')
ax1.set_ylabel('price')
ax1.set_title('the relationshaip between sqare and price')
plt.show()