用adaboost算法对乳腺癌数据进行分类并可视化python实现
时间: 2024-01-17 10:03:43 浏览: 76
Adaboost算法的Python实现
以下是使用adaboost算法对乳腺癌数据进行分类并可视化的Python实现。代码中使用了sklearn库中的AdaBoostClassifier和Breast Cancer Wisconsin (Diagnostic) 数据集。
首先,导入必要的库和数据集:
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn.ensemble import AdaBoostClassifier
from sklearn.datasets import load_breast_cancer
# 加载数据集
data = load_breast_cancer()
X = data.data
y = data.target
```
然后,将数据集分为训练集和测试集:
```python
# 将数据集分为训练集和测试集
split = int(0.7 * len(X))
X_train, y_train = X[:split], y[:split]
X_test, y_test = X[split:], y[split:]
```
接下来,使用AdaBoostClassifier进行训练和预测:
```python
# 使用AdaBoostClassifier进行训练和预测
classifier = AdaBoostClassifier()
classifier.fit(X_train, y_train)
predictions = classifier.predict(X_test)
```
最后,使用matplotlib库进行可视化:
```python
# 绘制决策边界
plt.figure(figsize=(10, 6))
x_min, x_max = X[:, 0].min() - 0.5, X[:, 0].max() + 0.5
y_min, y_max = X[:, 1].min() - 0.5, X[:, 1].max() + 0.5
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.02), np.arange(y_min, y_max, 0.02))
Z = classifier.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.contourf(xx, yy, Z, cmap=plt.cm.Spectral, alpha=0.8)
# 绘制训练集和测试集
plt.scatter(X_train[:, 0], X_train[:, 1], c=y_train, cmap=plt.cm.Spectral)
plt.scatter(X_test[:, 0], X_test[:, 1], c=y_test, cmap=plt.cm.Spectral, alpha=0.5)
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title('AdaBoost Classifier')
plt.show()
```
运行完整的代码后,将会输出一张决策边界的可视化图像,其中红色点表示恶性肿瘤,蓝色点表示良性肿瘤,可以清楚地看到AdaBoost算法对乳腺癌数据进行了有效的分类。
完整代码如下:
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn.ensemble import AdaBoostClassifier
from sklearn.datasets import load_breast_cancer
# 加载数据集
data = load_breast_cancer()
X = data.data
y = data.target
# 将数据集分为训练集和测试集
split = int(0.7 * len(X))
X_train, y_train = X[:split], y[:split]
X_test, y_test = X[split:], y[split:]
# 使用AdaBoostClassifier进行训练和预测
classifier = AdaBoostClassifier()
classifier.fit(X_train, y_train)
predictions = classifier.predict(X_test)
# 绘制决策边界
plt.figure(figsize=(10, 6))
x_min, x_max = X[:, 0].min() - 0.5, X[:, 0].max() + 0.5
y_min, y_max = X[:, 1].min() - 0.5, X[:, 1].max() + 0.5
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.02), np.arange(y_min, y_max, 0.02))
Z = classifier.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.contourf(xx, yy, Z, cmap=plt.cm.Spectral, alpha=0.8)
# 绘制训练集和测试集
plt.scatter(X_train[:, 0], X_train[:, 1], c=y_train, cmap=plt.cm.Spectral)
plt.scatter(X_test[:, 0], X_test[:, 1], c=y_test, cmap=plt.cm.Spectral, alpha=0.5)
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title('AdaBoost Classifier')
plt.show()
```
阅读全文