上传文件至 /

This commit is contained in:
2026-04-02 02:21:12 +00:00
commit 505f8176ff
5 changed files with 173 additions and 0 deletions

View File

@ -0,0 +1,29 @@
from sklearn.linear_model import LogisticRegression
import numpy as np
import matplotlib.pyplot as plt
# 生成简单的多分类数据集
X = np.array([[1, 2], [2, 3], [3, 4], [6, 7], [7, 8], [8, 9], [1, 3], [2, 4], [3, 5]])
y = np.array([0, 0, 0, 1, 1, 1, 2, 2, 2]) # 三个类别0, 1, 2
# 训练 Softmax 回归模型(多分类)
model = LogisticRegression(multi_class='multinomial', solver='lbfgs')
model.fit(X, y)
# 绘制数据点和决策边界
x1_min, x1_max = X[:, 0].min() - 1, X[:, 0].max() + 1
x2_min, x2_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.linspace(x1_min, x1_max, 100),
np.linspace(x2_min, x2_max, 100))
Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
# 可视化数据点和决策边界
plt.contourf(xx, yy, Z, alpha=0.4)
plt.scatter(X[:, 0], X[:, 1], c=y, marker='o', edgecolors='k', cmap=plt.cm.Paired)
plt.title("Softmax Regression (Multinomial) - Decision Boundary")
plt.show()
"""
使用 LogisticRegression(multi_class='multinomial') 来实现多分类的 Softmax 回归。
通过训练后的模型,绘制出决策边界,并显示不同类别的数据点。
"""

View File

@ -0,0 +1,50 @@
import numpy as np
import matplotlib.pyplot as plt
# 生成简单的二分类数据集
X = np.array([[2, 3], [3, 3], [4, 4], [1, 2], [2, 1], [3, 1]])
y = np.array([1, 1, 1, -1, -1, -1]) # 标签1表示正类-1表示负类
# 感知器模型
class Perceptron:
def __init__(self, lr=0.1, n_iter=1000):
self.lr = lr # 学习率
self.n_iter = n_iter # 迭代次数
self.weights = None
self.bias = 0
def fit(self, X, y):
n_samples, n_features = X.shape
self.weights = np.zeros(n_features)
for _ in range(self.n_iter):
for i in range(n_samples):
if y[i] * (np.dot(X[i], self.weights) + self.bias) <= 0:
self.weights += self.lr * y[i] * X[i]
self.bias += self.lr * y[i]
def predict(self, X):
return np.sign(np.dot(X, self.weights) + self.bias)
# 训练感知器模型
model = Perceptron()
model.fit(X, y)
# 绘制数据点和决策边界
x1_min, x1_max = X[:, 0].min() - 1, X[:, 0].max() + 1
x2_min, x2_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.linspace(x1_min, x1_max, 100),
np.linspace(x2_min, x2_max, 100))
Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
# 可视化数据点和决策边界
plt.contourf(xx, yy, Z, alpha=0.4)
plt.scatter(X[:, 0], X[:, 1], c=y, marker='o', edgecolors='k', cmap=plt.cm.Paired)
plt.title("Perceptron Model - Decision Boundary")
plt.show()
"""
使用简单的二维数据集来训练感知器模型。
fit 方法实现了感知器的训练过程,更新权重和偏置。
然后,使用 predict 方法对数据点进行分类,并使用 Matplotlib 可视化其决策边界。
"""

View File

@ -0,0 +1,30 @@
from sklearn.svm import SVC
import numpy as np
import matplotlib.pyplot as plt
# 生成简单的二分类数据集
X = np.array([[2, 3], [3, 3], [4, 4], [1, 2], [2, 1], [3, 1]])
y = np.array([1, 1, 1, -1, -1, -1]) # 标签1表示正类-1表示负类
# 训练 SVM 模型
model = SVC(kernel='linear')
model.fit(X, y)
# 绘制数据点和决策边界
x1_min, x1_max = X[:, 0].min() - 1, X[:, 0].max() + 1
x2_min, x2_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.linspace(x1_min, x1_max, 100),
np.linspace(x2_min, x2_max, 100))
Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
# 可视化数据点和决策边界
plt.contourf(xx, yy, Z, alpha=0.4)
plt.scatter(X[:, 0], X[:, 1], c=y, marker='o', edgecolors='k', cmap=plt.cm.Paired)
plt.title("SVM (Linear Kernel) - Decision Boundary")
plt.show()
"""
通过 SVC(kernel='linear') 训练一个线性支持向量机模型。
使用 model.fit() 来训练model.predict() 用于计算决策边界。
同样,使用 Matplotlib 可视化决策边界。
"""

34
线性回归1.py Normal file
View File

@ -0,0 +1,34 @@
import numpy as np
import matplotlib.pyplot as plt
# 生成样本数据
np.random.seed(42)
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)
# 归一化处理
X_b = np.c_[np.ones((X.shape[0], 1)), X] # 添加x0 = 1
# 初始化参数
theta = np.random.randn(2, 1)
learning_rate = 0.1
n_iterations = 1000
m = len(X)
# 梯度下降
for iteration in range(n_iterations):
gradients = 2/m * X_b.T.dot(X_b.dot(theta) - y)
theta -= learning_rate * gradients
# 输出训练结果
print(f"权重:{theta[1][0]}")
print(f"偏置:{theta[0][0]}")
# 绘制数据点与预测结果
plt.scatter(X, y, color='blue', label='实际数据')
plt.plot(X, X_b.dot(theta), color='red', linewidth=2, label='预测结果')
plt.xlabel("特征 X")
plt.ylabel("目标变量 y")
plt.title("线性回归 - 预测结果与实际数据对比(梯度下降)")
plt.legend()
plt.show()

View File

@ -0,0 +1,30 @@
from sklearn.linear_model import LogisticRegression
import numpy as np
import matplotlib.pyplot as plt
# 生成简单的二分类数据集
X = np.array([[2, 3], [3, 3], [4, 4], [1, 2], [2, 1], [3, 1]])
y = np.array([1, 1, 1, 0, 0, 0]) # 标签0表示负类1表示正类
# 训练逻辑回归模型
model = LogisticRegression()
model.fit(X, y)
# 绘制数据点和决策边界
x1_min, x1_max = X[:, 0].min() - 1, X[:, 0].max() + 1
x2_min, x2_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.linspace(x1_min, x1_max, 100),
np.linspace(x2_min, x2_max, 100))
Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
# 可视化数据点和决策边界
plt.contourf(xx, yy, Z, alpha=0.4)
plt.scatter(X[:, 0], X[:, 1], c=y, marker='o', edgecolors='k', cmap=plt.cm.Paired)
plt.title("Logistic Regression - Decision Boundary")
plt.show()
"""
使用 LogisticRegression 模型在简单的二分类数据上训练。
model.fit() 训练模型model.predict() 得到决策边界。
使用 Matplotlib 绘制出决策边界以及数据点。
"""