Python 如何在SVM情绪分析中使用predict_proba

Python 如何在SVM情绪分析中使用predict_proba,python,machine-learning,scikit-learn,svm,sentiment-analysis,Python,Machine Learning,Scikit Learn,Svm,Sentiment Analysis,我在分类问题上应用了预测概率。我有一些在R中构建分类模型的经验,但这是我第一次使用Python的sklearn 所以问题是:在sklearnafterfitting中,我找不到一种获取概率的方法。可能吗?有一种方法predict_proba(),但是……顾名思义,它就是预测。这是我的代码: import pandas as pd from sklearn.svm import SVC from sklearn.svm import LinearSVC import pickle from nl

我在分类问题上应用了预测概率。我有一些在R中构建分类模型的经验,但这是我第一次使用Python的sklearn

所以问题是:在sklearnafterfitting中,我找不到一种获取概率的方法。可能吗?有一种方法predict_proba(),但是……顾名思义,它就是预测。这是我的代码:

import pandas as pd 
from sklearn.svm import SVC
from sklearn.svm import LinearSVC
import pickle
from nltk.tokenize import sent_tokenize
from Model import SkripsiPipeline

def konten(kata, model):
    item = []
    loaded_model = pickle.load(open(model, 'rb'))
    for v in kata.itertuples(index = False):
        sentiment = [] 
        variabel1 = v[0]
        variabel2 = v[1]

        kalimat = variabel1 + variabel2

        hasil_tokenize = sent_tokenize(kalimat)

        preds = loaded_model.predict(hasil_tokenize)

        if preds == 1:
            proba = loaded_model.predict_proba(hasil_tokenize)
            proba = proba.reshape(-1, 1).tolist()
            sentiment.append('Positif')
            sentiment.append(proba[0])

        elif preds == 0:
            proba = loaded_model.predict_proba(hasil_tokenize)
            proba = proba.reshape(-1, 1).tolist()
            sentiment.append('Netral')
            sentiment.append(proba[1])

        elif preds == -1:
            proba = loaded_model.predict_proba(hasil_tokenize)
            proba = proba.reshape(-1,1).tolist()
            sentiment.append('Negatif')
            sentiment.append(proba[2])

        item.append(sentiment)

    return item
但我有一个错误:

AttributeError: 'SkripsiPipeline' object has no attribute 'predict_proba'
这是SkripsiPipeline代码:

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer
from sklearn.metrics import accuracy_score, confusion_matrix
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.model_selection import KFold
from sklearn.svm import SVC
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import classification_report, confusion_matrix, accuracy_score
import pickle

class SkripsiPipeline():
    def __init__ (self, predictor):
        self.predictor = predictor
    def fit(self,X,y):
        vectorizer = CountVectorizer()
        tfidf_transformer = TfidfTransformer()
        svm_predictor = self.predictor
        X = vectorizer.fit_transform(X)
        X = tfidf_transformer.fit_transform(X)
        svm_predictor.fit(X,y)

        self.vectorizer = vectorizer
        self.tfidf_transformer = tfidf_transformer
        self.svm_predictor = svm_predictor

    def predict (self, X):
        X = self.vectorizer.transform(X)
        X = self.tfidf_transformer.transform(X)
        prediction = self.svm_predictor.predict(X)
        return prediction

我是Python Sklearn软件包的新手。谁能告诉我Python代码有什么问题吗。我在谷歌上搜索过,但无法正确理解。

您调用了
predict\u proba
方法,该方法在
SkripsiPipeline
类中不存在。您应该实现一个类似于
predict
方法的方法,但是它从
svm\u predictor
调用
predict\u proba
,而不是它的
predict
方法

应该是这样的:

def predict_proba(self, X):
    X = self.vectorizer.transform(X)
    X = self.tfidf_transformer.transform(X)
    proba = self.svm_predictor.predict_proba(X)
    return proba

您调用的
predict\u proba
方法在
SkripsiPipeline
类中不存在。您应该实现一个类似于
predict
方法的方法,但是它从
svm\u predictor
调用
predict\u proba
,而不是它的
predict
方法

应该是这样的:

def predict_proba(self, X):
    X = self.vectorizer.transform(X)
    X = self.tfidf_transformer.transform(X)
    proba = self.svm_predictor.predict_proba(X)
    return proba