如何用Python分析数据规律?基于SVC的预测模型优化求助
模型优化方案:自定义数据集的数字预测优化
原代码核心问题
- 未加载自定义数据集,仍在使用鸢尾花测试数据,完全偏离任务场景
- SVM对数据尺度敏感,原代码未做标准化/归一化处理,模型性能受限
- 手动实现Softmax冗余且不严谨,
SVC本身支持通过参数配置输出概率 - 缺少模型评估环节,无法量化精度问题,也无参数调优过程
- 概率排序逻辑冗余,可通过numpy直接实现
优化后完整实现步骤
- 加载自定义数据集并划分特征与标签
- 对特征做标准化处理,适配SVM模型特性
- 启用SVC概率输出功能,通过网格搜索调优参数
- 用测试集评估模型精度
- 对新数据做预测并输出排序后的类别概率
优化代码示例
import numpy as np import pandas as pd from sklearn.model_selection import train_test_split, GridSearchCV from sklearn.svm import SVC from sklearn.preprocessing import StandardScaler from sklearn.metrics import accuracy_score # 1. 加载自定义数据集(替换为你的数据集路径) # 假设数据集为CSV格式,前n-1列为特征,最后一列为标签 data = pd.read_csv("your_dataset.csv") X = data.iloc[:, :-1].values y = data.iloc[:, -1].values # 2. 划分训练集与测试集 X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.2, random_state=42 ) # 3. 数据标准化(SVM必备步骤) scaler = StandardScaler() X_train_scaled = scaler.fit_transform(X_train) X_test_scaled = scaler.transform(X_test) # 4. SVC参数网格搜索调优 param_grid = { 'C': [0.1, 1, 10, 100], 'gamma': [1, 0.1, 0.01, 0.001], 'kernel': ['linear', 'rbf'] } grid = GridSearchCV(SVC(probability=True, random_state=42), param_grid, refit=True, verbose=2) grid.fit(X_train_scaled, y_train) # 5. 模型精度评估 y_pred = grid.predict(X_test_scaled) print(f"测试集精度: {accuracy_score(y_test, y_pred):.4f}") print(f"最优参数: {grid.best_params_}") # 6. 新数据预测与概率输出 X_new = np.array([[6, 0, 5, 22]]) # 你的新输入数据 X_new_scaled = scaler.transform(X_new) # 获取各类别概率并排序输出 probabilities = grid.predict_proba(X_new_scaled)[0] sorted_indices = np.argsort(probabilities)[::-1] for idx in sorted_indices: print(f"类别 {idx}: 概率 {probabilities[idx]:.4f}")
额外优化建议
- 若为序列预测任务(预测数字是序列延续),SVM并非最优选择,可尝试LSTM或Transformer模型
- 若数据集存在类别不平衡,添加
class_weight='balanced'参数调整权重 - 可对比随机森林、XGBoost等模型性能,选择最优方案
内容的提问来源于stack exchange,提问作者ZHONG WEN
相关产品推荐
相关产品推荐

