ml的线性回归应用(python语言)

线性回归的模型是:y=theta0*x+theta1   其中theta0,theta1是我们希望得到的系数和截距。

下面是代码实例:

1. 用自定义数据来看看格式:

# -*- coding:utf-8 -*-

from sklearn import linear_model
from resys.SplitData import *
from numpy import *
import matplotlib.pyplot as plt

## 注意:
## python线性回归的数据输入格式
## x的每个值以列表格式存在
x=[[150.0],[200.0],[250.0],[300.0],[350.0],[400.0],[600.0]]
y=[6450.0,7450.0,8450.0,9450.0,11450.0,15450.0,18450.0]
x_test=800.0

#建模
regr=linear_model.LinearRegression()
regr.fit(x,y)
regr.score(x,y)

#返回系数和截距
print("efficient :n", regr.coef_)
print("intercept :n",regr.intercept_)

#预测
predicted=regr.predict(x_test)
print ("predicted results: n",predicted)

# ----------------------------------------------------
# 描出训练点和拟合的直线
def show_linear_line(x,y):
    regr=linear_model.LinearRegression()
    regr.fit(x,y)
    plt.scatter(x,y,color='blue')
    plt.plot(x,regr.predict(x),color='red',linewidth=4)
    plt.xticks(())
    plt.yticks(())
    plt.show()

show_linear_line(x,y)

2. 从文件中读取数据:

# -*- coding:utf-8 -*-

from sklearn import linear_model
from resys.SplitData import *
from numpy import *
import matplotlib.pyplot as plt

## test是一个数据文件,包含4列,以tab分割
#我们只需要取出第一列来作为x, 第三列作为y
#然后把数据再分为两部分,训练集和测试集
data3=open("e:/python/movie_ratings/test.dat","r")

xlist=[]
ylist=[]

for data in data3:
    xlist.append(''.join(str(data.split('	')[0])))
    ylist.append(''.join(str(data.split('	')[2])))

data3.close()

xlist_train,xlist_test=SplitData(xlist, 7, 3, 10)  #SplitData是我自定义的切分函数
ylist_train,ylist_test=SplitData(ylist, 7, 3, 10)

x_train=[]              #这是第一种,把['1','2','3'] 转化为需要的[[1.0],[2.0],[3.0]]的方法
for i in xlist_train:
    b=[]
    b.append(float(i))
    x_train.append(b)

x_test=[]                             #第二种,更简便明了一些
for i in xlist_test:
    x_test.append([float(i)])

y_train=[float(i) for i in ylist_train]   #y格式要求很简单,[1.0, 2.0, 3.0]即可

#建模
linear=linear_model.LinearRegression()
linear.fit(x_train,y_train)
linear.score(x_train,y_train)

# 返回系数和截距
print('Coefficient:n',linear.coef_)       
print('Intercept:n',linear.intercept_)   

#预测
predicted=linear.predict(x_test)
print("predicted results:n",predicted)

# ----------------------------------------------------
# 描出训练集;及拟合的直线
def show_linear_line(x,y):
    regr=linear_model.LinearRegression()
    regr.fit(x,y)
    plt.scatter(x,y,color='blue')
    plt.plot(x,regr.predict(x),color='red',linewidth=4)
    plt.xticks(())
    plt.yticks(())
    plt.show()

show_linear_line(x_train,y_train)
原文地址:https://www.cnblogs.com/skyEva/p/5407326.html