Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 高斯朴素贝叶斯分类的数据类型使用sklearn,如何清理数据_Python_Pandas_Scikit Learn_Classification - Fatal编程技术网

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

Python 高斯朴素贝叶斯分类的数据类型使用sklearn,如何清理数据,python,pandas,scikit-learn,classification,Python,Pandas,Scikit Learn,Classification,我试图根据手机的功能对其进行分类,但当我通过sklearn应用gaussian NB代码时,由于以下错误,我无法这样做: 守则: clf = GaussianNB() clf.fit(X_train,y_train) GaussianNB() accuracy = clf.score(X_test,y_test) print(accuracy) 错误: ValueError Traceback (most recent call l

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

clf = GaussianNB()
clf.fit(X_train,y_train)
GaussianNB()
accuracy = clf.score(X_test,y_test)
print(accuracy)
错误:

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: 
ValueError回溯(最近一次调用)
在()
2层装配(X\U系列、y\U系列)
3高斯b()
---->4准确度=clf分数(X_检验、y_检验)
5打印(准确性)
/用户/kiran/anaconda/lib/python3.6/site-packages/sklearn/base.py得分(自我、X、y、样本重量)
347         """
348来自。度量导入准确性\u分数
-->349返回准确度评分(y,自我预测(X),样本权重=样本权重)
350
351
/预测中的Users/kiran/anaconda/lib/python3.6/site-packages/sklearn/naive_bayes.py(self,X)
X的63个预测目标值
64         """
--->65 jll=自联合对数似然(X)
66返回自类[np.argmax(jll,轴=1)]
67
/Users/kiran/anaconda/lib/python3.6/site-packages/sklearn/naive_bayes.py in_joint_log_likelion(self,X)
422检查是否已安装(自“类”)
423
-->424 X=检查_阵列(X)
425联合对数可能性=[]
426适用于范围内的i(np.尺寸(自类)∶
/检查数组中的Users/kiran/anaconda/lib/python3.6/site-packages/sklearn/utils/validation.py
380力(全部有限)
381其他:
-->382 array=np.array(array,dtype=dtype,order=order,copy=copy)
383
384如果确保\u 2d:
ValueError:无法将字符串转换为浮点:
我的数据集已被删除,因此它包含字符串和浮点值。如果有人能建议我如何清理数据和避免错误,那将是很有帮助的

ValueError: could not convert string to float 
我想这说明了一切。您需要将
float
作为数据集中的一致数据类型

要将python中的
字符串
转换为
浮点

>>> a = "123.345"
>>> float(a)
>>> 123.345
>>> int(float(a))
>>> 123
请尝试以下操作:

accuracy = clf.score(X_test.astype('float'),y_test.astype('float'))

此外,如果问题中提供了所有相关信息,则回答问题更容易。你也应该发布一个带有问题的数据集片段(一小部分)。有没有一种方法可以对数据集进行字符串处理?我会这样做的!我将编辑并添加数据集。我已经编辑了我的答案,包括如何将字符串转换为浮点。请检查。您的问题现在已经解决了吗?它仍然显示相同的错误。您可以执行打印(X_测试)和打印(Y_测试)来显示内部内容吗?'print(X_测试)[[32'4'12 1][8'1'8 0][32'3'13 0][64'6'16 1][16'2'12 0][16'2'8'4'16 1][128'6'16 1][8'1'8 0][128'6'12 1][64'4'12 1][64'4'12 1][64'4'16 0][128'4'12 1][32'4'16 0][32 nan 16 1][16 nan 8 0][16 nan 8 0][16'3'13 0][64'6'16 1][64'6'16 1][1打印(y_测试)[1 3 2 3 3 2 2 3 3 3 1 2 1 2 2 3 2]我确实将nan值更改为-9999,但它仍然显示nan