首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >高斯朴素贝叶斯分类的数据类型--使用sklearn如何清理数据

高斯朴素贝叶斯分类的数据类型--使用sklearn如何清理数据
EN

Stack Overflow用户
提问于 2018-05-27 06:40:55
回答 2查看 506关注 0票数 3

我试图根据手机的特性对其进行分类,但当我通过sklearn应用高斯NB代码时,由于以下错误,我无法这样做:代码:

代码语言:javascript
复制
clf = GaussianNB()
clf.fit(X_train,y_train)
GaussianNB()
accuracy = clf.score(X_test,y_test)
print(accuracy)

错误:

代码语言:javascript
复制
ValueError                                Traceback (most recent call last)
<ipython-input-18-e9515ccc2439> in <module>()
      2 clf.fit(X_train,y_train)
      3 GaussianNB()
----> 4 accuracy = clf.score(X_test,y_test)
      5 print(accuracy)

/Users/kiran/anaconda/lib/python3.6/site-packages/sklearn/base.py in score(self, X, y, sample_weight)
    347         """
    348         from .metrics import accuracy_score
--> 349         return accuracy_score(y, self.predict(X), sample_weight=sample_weight)
    350 
    351 

/Users/kiran/anaconda/lib/python3.6/site-packages/sklearn/naive_bayes.py in predict(self, X)
     63             Predicted target values for X
     64         """
---> 65         jll = self._joint_log_likelihood(X)
     66         return self.classes_[np.argmax(jll, axis=1)]
     67 

/Users/kiran/anaconda/lib/python3.6/site-packages/sklearn/naive_bayes.py in _joint_log_likelihood(self, X)
    422         check_is_fitted(self, "classes_")
    423 
--> 424         X = check_array(X)
    425         joint_log_likelihood = []
    426         for i in range(np.size(self.classes_)):

/Users/kiran/anaconda/lib/python3.6/site-packages/sklearn/utils/validation.py in check_array(array, accept_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, warn_on_dtype, estimator)
    380                                       force_all_finite)
    381     else:
--> 382         array = np.array(array, dtype=dtype, order=order, copy=copy)
    383 
    384         if ensure_2d:

ValueError: could not convert string to float: 

我的数据集已经被刮过,所以它包含字符串和浮点值。如果有人能建议我如何清理数据和避免错误,这将是有帮助的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-27 06:52:49

尝试以下几点:

代码语言:javascript
复制
accuracy = clf.score(X_test.astype('float'),y_test.astype('float'))
票数 1
EN

Stack Overflow用户

发布于 2018-05-27 06:46:44

代码语言:javascript
复制
ValueError: could not convert string to float 

我想这说明了一切。您需要在数据集中将float作为一致的数据类型。

将python中的string转换为float

代码语言:javascript
复制
>>> a = "123.345"
>>> float(a)
>>> 123.345
>>> int(float(a))
>>> 123
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50549681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档