Python,用SVM算法对乳腺癌患者进行分类和单点预测,写出代码
时间: 2024-11-14 18:22:54 浏览: 34
在Python中,我们可以使用scikit-learn库来实现支持向量机(SVM)算法。首先需要加载数据集,然后分割数据集为训练集和测试集,接着构建模型并训练,最后做预测。这里假设你已经有了一个名为`breast_cancer.csv`的数据集。这是一个简单的流程:
```python
# 导入所需的库
import pandas as pd
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score, classification_report
# 加载数据
data = pd.read_csv('breast_cancer.csv')
X = data.drop('diagnosis', axis=1) # 特征
y = data['diagnosis'] # 目标变量
# 数据预处理
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)
# 初始化SVM模型
svm_model = SVC(kernel='linear') # 可以尝试不同的内核如'rbf', 'poly'
# 训练模型
svm_model.fit(X_train, y_train)
# 预测
y_pred = svm_model.predict(X_test)
# 评估模型
accuracy = accuracy_score(y_test, y_pred)
report = classification_report(y_test, y_pred)
print(f"Accuracy: {accuracy*100:.2f}%")
print("\nClassification Report:\n", report)
# 单点预测
# 假设我们有一个新的样本point
new_sample = [[...]] # 这里填上新样本的特征值
new_sample_scaled = scaler.transform(new_sample)
single_prediction = svm_model.predict([new_sample_scaled])
print(f"Single prediction for new sample: {single_prediction}")
```
记得替换`[...]`为实际的新样本特征,并调整内核参数以优化模型性能。
阅读全文