Realisieren Sie eine lineare Regression mit Python über ein Jupyter-Notizbuch

1. Heute wird Xiaoguan über die Verwendung von Python sprechen, um eine lineare Regression zu erreichen

2. Komm schon, zeig:

#python实现线性回归
import numpy as np
import pandas as pd
from numpy.linalg import inv
from numpy import dot
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
from sklearn import linear_model
# 最小二乘法
def lms(x_train,y_train,x_test):
  theta_n = dot(dot(inv(dot(x_train.T, x_train)), x_train.T), y_train) # theta = (X'X)^(-1)X'Y
  #print(theta_n)
  y_pre = dot(x_test,theta_n)
  mse = np.average((y_test-y_pre)**2)
  #print(len(y_pre))
  #print(mse)
  return theta_n,y_pre,mse
#梯度下降算法
def train(x_train, y_train, num, alpha,m, n):
  beta = np.ones(n)
  for i in range(num):
    h = np.dot(x_train, beta)       # 计算预测值
    error = h - y_train.T         # 计算预测值与训练集的差值
    delt = 2*alpha * np.dot(error, x_train)/m # 计算参数的梯度变化值
    beta = beta - delt
    #print('error', error)
  return beta
if __name__ == "__main__":
    #iris.csv保存为自己的本地路径
  iris = pd.read_csv('E:\新加卷(E)\python学习\iris.csv')
  iris['Bias'] = float(1)
  x = iris[['Sepal.Width', 'Petal.Length', 'Petal.Width', 'Bias']]
  y = iris['Sepal.Length']
  x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=5)
  t = np.arange(len(x_test))
  m, n = np.shape(x_train)
  # Leastsquare
  theta_n, y_pre, mse = lms(x_train, y_train, x_test)
  # plt.plot(t, y_test, label='Test')
  # plt.plot(t, y_pre, label='Predict')
  # plt.show()
  # GradientDescent
  beta = train(x_train, y_train, 1000, 0.001, m, n)
  y_predict = np.dot(x_test, beta.T)
  # plt.plot(t, y_predict)
  # plt.plot(t, y_test)
  # plt.show()
  # sklearn
  regr = linear_model.LinearRegression()
  regr.fit(x_train, y_train)
  y_p = regr.predict(x_test)
  print(regr.coef_,theta_n,beta)
  l1,=plt.plot(t, y_predict)
  l2,=plt.plot(t, y_p)
  l3,=plt.plot(t, y_pre)
  l4,=plt.plot(t, y_test)
  plt.legend(handles=[l1, l2,l3,l4 ], labels=['GradientDescent', 'sklearn','Leastsquare','True'], loc='best')
  plt.show()

  Teilen Sie die Download-Adresse von iris.csv: http://yy.jb51.net:81/201812/yuanma/iris.csv(jb51.net).rar

3. Drucken Sie das Ergebnis aus:

 

 4. Der Code ist etwas lang. Ich hoffe, dass ich ihn geduldig analysieren kann. Wenn Sie ihn nicht verstehen, können Sie mir eine private Nachricht senden. Die Kontaktinformationen finden Sie unten

Ich hoffe, ich kann allen helfen. Ich frage Sie, ob Sie ein "
Gefällt mir" möchten. Geben Sie es an. Vielen Dank. Copyright-Erklärung: Das Copyright dieses Artikels liegt beim Autor (@ 攻城 狮 小 关) und bei CSDN. Willkommen zum Nachdruck, aber Sie müssen diesen Absatz ohne Zustimmung des Autors behalten Erklärung und Bereitstellung des ursprünglichen Links an einer offensichtlichen Stelle auf der Artikelseite, andernfalls bleibt das Recht zur Ausübung der gesetzlichen Verantwortung vorbehalten.
Es ist nicht für jeden einfach, Artikel zu schreiben. Bitte respektieren Sie die Früchte Ihrer Arbeit. ~ 
Kommunikation plus F: 1909561302 Bloggartenadresse
https://www.cnblogs.com/guanguan-com/

Ich denke du magst

Origin blog.csdn.net/Mumaren6/article/details/108689906
Empfohlen
Rangfolge