So implementieren Sie eine lineare Regression in Python

清浅
Freigeben: 2019-04-17 10:43:38
Original
11388 Leute haben es durchsucht

Die Schritte zum Implementieren der linearen Regression in der Python-Sprache sind: Importieren Sie die zu verwendende Bibliothek, lesen Sie die Daten und führen Sie eine Vorverarbeitung durch. Analysieren Sie Daten, erstellen Sie ein lineares Regressionsmodell und führen Sie ein Modelltraining durch, um den Modelleffekt zu testen

Die Implementierung der linearen Regression mit der Python-Sprache ist sehr praktisch, da sie mehrere vorgefertigte Bibliotheken wie Numpy bereitstellt. linalog .lstsq, pandas.ols und

scipy.stats.linregress usw. In diesem Artikel verwenden wir die linear_model.LinearRegression der sklearn-Bibliothek, die jede Dimension unterstützt und sehr einfach zu verwenden ist.

So implementieren Sie eine lineare Regression in Python

[Empfohlenes Tutorial: Python-Tutorial]

Zweidimensionale gerade Linie

Beispiel: Lineare Gleichung y=a*x+b; y=a*x+b stellt eine gerade Linie auf der Ebene dar

Im folgenden Beispiel werden wir feststellen ein lineares Regressionsmodell, das den Preis eines Hauses vorhersagt, indem es seine Fläche angibt

import pandas as pd
from io import StringIO
from sklearn import linear_model
import matplotlib.pyplot as plt
# 房屋面积与价格历史数据(csv文件)
csv_data = 'square_feet,price\n150,6450\n200,7450\n250,8450\n300,9450\n350,11450\n400,15450\n600,18450\n'
# 读入dataframe
df = pd.read_csv(StringIO(csv_data))
print(df)
# 建立线性回归模型
regr = linear_model.LinearRegression()
# 拟合
regr.fit(df['square_feet'].reshape(-1, 1), df['price']) # 注意此处.reshape(-1, 1),因为X是一维的!
# 不难得到直线的斜率、截距
a, b = regr.coef_, regr.intercept_
# 给出待预测面积
area = 238.5
# 方式1:根据直线方程计算的价格
print(a * area + b)
# 方式2:根据predict方法预测的价格
print(regr.predict(area))
# 画图
# 1.真实的点
plt.scatter(df['square_feet'], df['price'], color='blue')
# 2.拟合的直线
plt.plot(df['square_feet'], regr.predict(df['square_feet'].reshape(-1,1)), color='red', linewidth=4)
plt.show()
Nach dem Login kopieren

Rendering:

So implementieren Sie eine lineare Regression in Python

Dreidimensionale Ebene

Lineare Gleichung z=a*x+b*y+c; z=a*x+b*y+c stellt eine Ebene im Raum dar

import numpy as np
from sklearn import linear_model
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
xx, yy = np.meshgrid(np.linspace(0,10,10), np.linspace(0,100,10))
zz = 1.0 * xx + 3.5 * yy + np.random.randint(0,100,(10,10))

# 构建成特征、值的形式
X, Z = np.column_stack((xx.flatten(),yy.flatten())), zz.flatten()

# 建立线性回归模型
regr = linear_model.LinearRegression()
# 拟合
regr.fit(X, Z)
# 不难得到平面的系数、截距
a, b = regr.coef_, regr.intercept_
# 给出待预测的一个特征
x = np.array([[5.8, 78.3]])
# 方式1:根据线性方程计算待预测的特征x对应的值z(注意:np.sum)
print(np.sum(a * x) + b)
# 方式2:根据predict方法预测的值z
print(regr.predict(x))
# 画图
fig = plt.figure()
ax = fig.gca(projection='3d')
# 1.画出真实的点
ax.scatter(xx, yy, zz)
# 2.画出拟合的平面
ax.plot_wireframe(xx, yy, regr.predict(X).reshape(10,10))
ax.plot_surface(xx, yy, regr.predict(X).reshape(10,10), alpha=0.3)
plt.show()
Nach dem Login kopieren

Rendering:

So implementieren Sie eine lineare Regression in Python

Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, er wird für alle hilfreich sein

Das obige ist der detaillierte Inhalt vonSo implementieren Sie eine lineare Regression in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!