完成--逻辑回归示例
This commit is contained in:
parent
877b061a91
commit
1deba768fb
1
docs/detail.md
Normal file
1
docs/detail.md
Normal file
@ -0,0 +1 @@
|
||||
1.项目采用 python sklearn库开发.
|
||||
58
logistic_regression.py
Normal file
58
logistic_regression.py
Normal file
@ -0,0 +1,58 @@
|
||||
# 导入必要的库
|
||||
import numpy as np
|
||||
import matplotlib.pyplot as plt
|
||||
from sklearn.datasets import load_iris
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.preprocessing import StandardScaler
|
||||
from sklearn.linear_model import LogisticRegression
|
||||
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report
|
||||
|
||||
# 加载数据集
|
||||
iris = load_iris()
|
||||
X = iris.data[:, :2] # 只使用前两个特征以便可视化
|
||||
y = (iris.target != 0) * 1 # 将目标变量转换为二分类问题(0和1)
|
||||
|
||||
# 将数据集分为训练集和测试集
|
||||
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
|
||||
|
||||
# 特征标准化
|
||||
scaler = StandardScaler()
|
||||
X_train = scaler.fit_transform(X_train)
|
||||
X_test = scaler.transform(X_test)
|
||||
|
||||
# 创建逻辑回归模型
|
||||
model = LogisticRegression()
|
||||
|
||||
# 训练模型
|
||||
model.fit(X_train, y_train)
|
||||
|
||||
# 在测试集上进行预测
|
||||
y_pred = model.predict(X_test)
|
||||
|
||||
# 评估模型性能
|
||||
accuracy = accuracy_score(y_test, y_pred)
|
||||
conf_matrix = confusion_matrix(y_test, y_pred)
|
||||
class_report = classification_report(y_test, y_pred)
|
||||
|
||||
print(f"Accuracy: {accuracy:.2f}")
|
||||
print("Confusion Matrix:")
|
||||
print(conf_matrix)
|
||||
print("Classification Report:")
|
||||
print(class_report)
|
||||
|
||||
# 可视化决策边界
|
||||
def plot_decision_boundary(X, y, model):
|
||||
h = .02 # 网格步长
|
||||
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
|
||||
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
|
||||
xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))
|
||||
Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
|
||||
Z = Z.reshape(xx.shape)
|
||||
plt.contourf(xx, yy, Z, alpha=0.8)
|
||||
plt.scatter(X[:, 0], X[:, 1], c=y, edgecolors='k', marker='o')
|
||||
plt.xlabel('Feature 1')
|
||||
plt.ylabel('Feature 2')
|
||||
plt.title('Decision Boundary')
|
||||
plt.savefig('./output/logistic.png')
|
||||
|
||||
plot_decision_boundary(X_train, y_train, model)
|
||||
BIN
output/logistic.png
Normal file
BIN
output/logistic.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 42 KiB |
Loading…
Reference in New Issue
Block a user