SVM classifier.predict() 函数给出了错误的输出

问题描述 投票:0回答:1

我正在尝试使用 SVM 进行预测

#Create a svm Classifier
model = svm.SVC(C = 1,kernel='linear')# Linear Kernel
#Train the model using the training sets
model.fit(X_train, y_train)
#Predict the response for test dataset
y_pred = model.predict(X_test)
y_pred

y_pred 应该包含 0 和 1 但 y_pred 只包含 0s[text] 的数组

输出: y_pred =[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]

谁能帮我找出问题出在哪里?

我期望 y_pred 是一个 0 和 1 的数组 但我得到的输出不正确

这是我使用的数据集: covid_data

我只是一个尝试学习机器学习的初学者。

python machine-learning dataset svm
1个回答
1
投票

您的 SVM 分类器似乎只为您的测试数据预测一个类(0)。这个问题可能是由于几个原因, 例如不平衡的数据、不正确的特征缩放或不合适的超参数选择。

这里有一些建议可以帮助您解决问题:

1- 检查数据不平衡:如果您的数据集高度不平衡,可能会导致有偏差的预测。 检查训练数据中标签的分布。如果数据不平衡,你可以尝试平衡数据的技术, 例如对少数类进行过采样、对多数类进行欠采样或使用 SMOTE 算法。

import numpy as np

unique, counts = np.unique(y_train, return_counts=True)

print("Label distribution in training data:", dict(zip(unique, counts)))

2- 特征缩放:SVM 对特征的缩放很敏感。确保在训练模型之前缩放特征。 您可以使用 sklearn 中的 StandardScaler 来扩展数据。

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

model.fit(X_train_scaled, y_train)
y_pred = model.predict(X_test_scaled)

3- 超参数调整:超参数的选择,例如正则化参数“C”和内核类型,可以显着 影响 SVM 分类器的性能。您可以为“C”尝试不同的值或使用 sklearn 中的 GridSearchCV 来找到最佳值 你的问题的超参数。

from sklearn.model_selection import GridSearchCV

param_grid = {'C': [0.1, 1, 10, 100], 'kernel': ['linear', 'rbf']}
grid_search = GridSearchCV(svm.SVC(), param_grid, cv=5)
grid_search.fit(X_train_scaled, y_train)

best_model = grid_search.best_estimator_
y_pred = best_model.predict(X_test_scaled)

尝试这些步骤,看看它们是否有助于改进 SVM 分类器的预测。如果问题仍然存在, 考虑探索其他分类模型或特征工程技术来提高模型的性能。

尝试访问以下网站以获得更深入的了解 访问:https://machinelearningmastery.com/support-vector-machines-for-machine-learning/

访问:https://www.analyticsvidhya.com/blog/2020/03/support-vector-regression-tutorial-for-machine-learning/

希望这对您有所帮助,编码愉快...

© www.soinside.com 2019 - 2024. All rights reserved.