我正在尝试计算预测概率。我写了一个正在计算的程序,但是速度非常慢,并且需要花费大量时间处理大型数据集。
目标是通过使用LinearSVC
和OneVsRestClassifier
来计算SVM模型中的每个预测概率,但会得到误差
AttributeError: 'LinearSVC' object has no attribute 'predict_proba'
由于上述错误,我在下面尝试过
代码
from sklearn import svm
model_1 = svm.SVC(kernel='linear', probability=True)
from sklearn.preprocessing import LabelEncoder
X_1 = df["Property Address"]
lb = LabelEncoder()
X_2 = lb.fit_transform(X_1)
y_1 = df["Location_Name"]
y_2 = lb.fit_transform(y_1)
test_1 = test["Property Address"]
lb = LabelEncoder()
test_1 = lb.fit_transform(test_1)
X_2= X_2.reshape(-1, 1)
y_2= y_2.reshape(-1, 1)
test_1 = test_1.reshape(-1, 1)
model_1.fit(X_2, y_2)
results = model_1.predict_proba(test_1)[0]
# gets a dictionary of {'class_name': probability}
prob_per_class_dictionary = dict(zip(model.classes_, results))
还有其他方法可以完成同一任务吗?请建议
答案 0 :(得分:0)
如果需要使用predict_proba
方法,则可以使用sklearns CalibratedClassifierCV。
或者您可以使用Logistic Regression。
如果您的问题与速度有关,请尝试考虑使用LinearSVC
中的sklearn.svm
而不是SVC(kernel='linear')
。更快。
答案 1 :(得分:0)
如另一个答案所建议,LinearSVC
比SVC(kernel='linear')
快。
关于概率,SVC没有predict_proba()
。相反,您必须将其probability
超参数设置为True
。 Link
提示:SVM是小型数据集的首选,因此更喜欢使用其他算法来处理大型数据集。