在 python 中,spyder,我导入 sklearn,为什么在“sklearn.metric”中找不到“分类”?

问题描述

它发送: 打印(metrics.classification.accuracy_score(y_test,y_pred))

属性错误:模块“sklearn.metrics”没有属性分类

似乎我的 sklearn 无法导入“分类”,但我找不到原因,请您帮我一下吗?

from sklearn import metrics
from sklearn.feature_extraction.text import CountVectorizer,TfidfTransformer
from sklearn.naive_bayes import MultinomialNB,BernoulliNB,GaussianNB
from sklearn.model_selection import train_test_split,cross_val_score
from sklearn.linear_model import SGDClassifier
from sklearn.pipeline import Pipeline


data_dir = 'enron'
target_names = ['ham','spam']

def get_data(data_dir):
    subfolders = ['enron%d' % i for i in range(1,7)]

    data = []
    target = []
    for subfolder in subfolders:
        
        # spam
        spam_files = os.listdir(os.path.join(data_dir,subfolder,'spam'))
        for spam_file in spam_files:
            with open(os.path.join(data_dir,'spam',spam_file),encoding='ascii',errors='ignore') as f:
                data.append(f.read())
                target.append(1)
                
        # ham
        ham_files = os.listdir(os.path.join(data_dir,'ham'))
        for ham_file in ham_files:
            with open(os.path.join(data_dir,'ham',ham_file),errors='ignore') as f:
                data.append(f.read())
                target.append(0)
                
    target = np.array(target)
    return(data,target)
    
X,y = get_data(data_dir)
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.10,random_state=42)

count_vec = CountVectorizer()
X_train_counts = count_vec.fit_transform(X_train)

tfidf_transformer = TfidfTransformer()
X_train_tfidf =  tfidf_transformer.fit_transform(X_train_counts)

clf = BernoulliNB().fit(X_train_tfidf,y_train)

X_test_counts = count_vec.transform(X_test)
X_test_tfidf = tfidf_transformer.transform(X_test_counts)

y_pred = clf.predict(X_test_tfidf)

print(metrics.classification_report(y_test,y_pred,target_names=target_names))
print(metrics.classification.accuracy_score(y_test,y_pred))

解决方法

升级你的 sklearn 应该可以解决这个问题。

在 pip 中它被称为 scikit-learn 而不是 sklearn,做

pip install scikit-learn

如果你已经有了,试试

pip install --upgrade scikit-learn