线性模型快速入门

发布于:2024-05-15 ⋅ 阅读:(91) ⋅ 点赞:(0)

使用matplotlib画一条直线

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-5, 5, 100)
y = 0.5*x + 3

plt.plot(x, y, c="orange")
plt.title("Straight Line")
plt.show()

在这里插入图片描述

线性模型的直线表示

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression

X = [[1], [4]]
y = [3,5]

lr = LinearRegression().fit(X, y)

z = np.linspace(0, 5, 20)

plt.scatter(X, y, s=80)
plt.plot(z, lr.predict(z.reshape(-1,1)), c="k")
plt.title("Straight Line")
plt.show()

在这里插入图片描述

获取线性模型的方程

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression

X = [[1], [4]]
y = [3,5]

lr = LinearRegression().fit(X, y)
print(f"y = {lr.coef_[0]:.3f}x + {lr.intercept_:.3f}")

z = np.linspace(0, 5, 20)

plt.scatter(X, y, s=80)
plt.plot(z, lr.predict(z.reshape(-1,1)), c="k")
plt.title("Straight Line")
plt.show()

在这里插入图片描述

绘制三个点的线性模型图

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression

X = [[1], [4], [3]]
y = [3,5,3]

lr = LinearRegression().fit(X, y)
print(f"y = {lr.coef_[0]:.3f}x + {lr.intercept_:.3f}")

z = np.linspace(0, 5, 20)

plt.scatter(X, y, s=80)
plt.plot(z, lr.predict(z.reshape(-1,1)), c="k")
plt.title("Straight Line")
plt.show()

在这里插入图片描述

生成数据集并绘制线性模型的图

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.datasets import make_regression

X, y = make_regression(n_samples=50, n_features=1, n_informative=1, noise=50, random_state=1)

lr = LinearRegression().fit(X, y)
print(f"y = {lr.coef_[0]:.3f}x + {lr.intercept_:.3f}")

z = np.linspace(-3, 3, 200).reshape(-1, 1)

plt.scatter(X, y, c="b", s=60)
plt.plot(z, lr.predict(z), c="k")
plt.title("Linear Regression")
plt.show()

在这里插入图片描述

训练和测试模型

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split

X, y = make_regression(n_samples=100, n_features=2, n_informative=2, noise=50, random_state=1)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=8)

lr = LinearRegression().fit(X_train, y_train)
print(f"y = {lr.coef_[0]:.3f}X1 + {lr.coef_[1]:.3f}X2 + {lr.intercept_:.3f}")
print(f"score = {lr.score(X_test, y_test)}")

在这里插入图片描述

实战:糖尿病预测

完整代码:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_diabetes

data = load_diabetes()
X, y = data.data, data.target
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=8)

lr = LinearRegression().fit(X_train, y_train)
print(f"y = {lr.coef_[0]:.3f}X1 + {lr.coef_[1]:.3f}X2 + {lr.intercept_:.3f}")
print(f"score = {lr.score(X_test, y_test)}")

输出:

y = 11.512X1 + -282.514X2 + 152.563
score = 0.4593422174874441

网站公告

今日签到

点亮在社区的每一天
去签到