请使用jupyter notebook帮我编写一个辅助诊断乳腺肿瘤,目的是使用scikit-learn内置的乳腺癌(breast_cancer)数据集,并对数据进行标准差标准化、PCA降维,用KNN、Logistic回归、SVM算法进行分类,判断乳腺肿瘤是良性还是恶性,并尝试对比不同系数进行建模,学习调节模型超参数等。使用numpy、matplotlib等第三方科学计算包处理数据,使用sklearn实现回归模型设计。
时间: 2024-02-25 10:51:50 浏览: 97
好的,以下是一个基于scikit-learn内置的乳腺癌数据集进行分类的Jupyter Notebook代码。本代码将使用KNN、Logistic回归、SVM算法进行分类,以判断乳腺肿瘤是良性还是恶性。
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_breast_cancer
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report
# 加载乳腺癌数据集
data = load_breast_cancer()
X = data.data
y = data.target
features = data.feature_names
# 标准化数据
scaler = StandardScaler()
X_std = scaler.fit_transform(X)
# PCA降维
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_std)
# 分割训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X_std, y, test_size=0.2, random_state=42)
# KNN分类器
knn = KNeighborsClassifier(n_neighbors=5)
knn.fit(X_train, y_train)
y_pred_knn = knn.predict(X_test)
acc_knn = accuracy_score(y_test, y_pred_knn)
cm_knn = confusion_matrix(y_test, y_pred_knn)
cr_knn = classification_report(y_test, y_pred_knn)
# Logistic回归分类器
logreg = LogisticRegression(C=0.1, solver='liblinear')
logreg.fit(X_train, y_train)
y_pred_logreg = logreg.predict(X_test)
acc_logreg = accuracy_score(y_test, y_pred_logreg)
cm_logreg = confusion_matrix(y_test, y_pred_logreg)
cr_logreg = classification_report(y_test, y_pred_logreg)
# SVM分类器
svm = SVC(kernel='linear', C=0.1)
svm.fit(X_train, y_train)
y_pred_svm = svm.predict(X_test)
acc_svm = accuracy_score(y_test, y_pred_svm)
cm_svm = confusion_matrix(y_test, y_pred_svm)
cr_svm = classification_report(y_test, y_pred_svm)
# 输出结果
print('KNN分类器的准确率:', acc_knn)
print('KNN分类器的混淆矩阵:\n', cm_knn)
print('KNN分类器的分类报告:\n', cr_knn)
print('Logistic回归分类器的准确率:', acc_logreg)
print('Logistic回归分类器的混淆矩阵:\n', cm_logreg)
print('Logistic回归分类器的分类报告:\n', cr_logreg)
print('SVM分类器的准确率:', acc_svm)
print('SVM分类器的混淆矩阵:\n', cm_svm)
print('SVM分类器的分类报告:\n', cr_svm)
# 可视化PCA降维后的数据
plt.figure(figsize=(8, 6))
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y, cmap='coolwarm')
plt.xlabel('First Principal Component')
plt.ylabel('Second Principal Component')
plt.title('PCA of Breast Cancer Dataset')
plt.show()
```
在上述代码中,我们首先加载了scikit-learn内置的乳腺癌数据集,然后对数据进行了标准化和PCA降维处理。接着,我们使用`train_test_split`函数将数据集分割成训练集和测试集,然后使用KNN、Logistic回归和SVM算法进行分类,并计算了准确率、混淆矩阵和分类报告等评估指标。最后,我们使用matplotlib将PCA降维后的数据可视化出来。
需要注意的是,上述代码仅是一个基本的示例,实际的乳腺肿瘤诊断可能需要更复杂的模型和更丰富的特征工程。
阅读全文