微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决在 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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。