當我在 Jupyter Lab 中運行以下代碼時
import numpy as np
from sklearn.feature_selection import SelectKBest,f_classif
import matplotlib.pyplot as plt
predictors = ["Pclass","Sex","Age","SibSp","Parch","Fare","Embarked","FamilySize","Title","NameLength"]
selector = SelectKBest(f_classif,k=5)
selector.fit(titanic[predictors],titanic["Survived"])
然后它出錯了,請注意ValueError: could not convert string to float: 'Mme',詳細資訊如下:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
C:\Users\ADMINI~1\AppData\Local\Temp/ipykernel_17760/1637555559.py in <module>
5 predictors = ["Pclass","Sex","Age","SibSp","Parch","Fare","Embarked","FamilySize","Title","NameLength"]
6 selector = SelectKBest(f_classif,k=5)
----> 7 selector.fit(titanic[predictors],titanic["Survived"])
......
ValueError: could not convert string to float: 'Mme'
我試圖列印titanic[predictors]和titanic["Survived"],那么細節如下:
Pclass Sex Age SibSp Parch Fare Embarked FamilySize Title NameLength
0 3 0 22.0 1 0 7.2500 0 1 1 23
1 1 1 38.0 1 0 71.2833 1 1 3 51
2 3 1 26.0 0 0 7.9250 0 0 2 22
3 1 1 35.0 1 0 53.1000 0 1 3 44
4 3 0 35.0 0 0 8.0500 0 0 1 24
... ... ... ... ... ... ... ... ... ... ...
886 2 0 27.0 0 0 13.0000 0 0 6 21
887 1 1 19.0 0 0 30.0000 0 0 2 28
888 3 1 28.0 1 2 23.4500 0 3 2 40
889 1 0 26.0 0 0 30.0000 1 0 1 21
890 3 0 32.0 0 0 7.7500 2 0 1 19
891 rows × 10 columns
0 0
1 1
2 1
3 1
4 0
..
886 0
887 1
888 0
889 1
890 0
Name: Survived, Length: 891, dtype: int64
如何解決這個問題呢?
uj5u.com熱心網友回復:
當您嘗試擬合某些演算法(就您而言SelectKBest)時,您需要了解您的資料。而且,幾乎所有時間都需要對其進行預處理。
看看你的資料:
- 你有分類特征還是數字特征?還是混合?
- 你有 NaN 值嗎?
- ...
大多數演算法不接受分類特征,您需要轉換為數值特征(評估 的使用OneHotEncoder)。
在您的情況下,您似乎有一個名為 的分類值Mme,該值在功能中Title。核實。
NaN 值也會有同樣的問題。
總之,在開始擬合之前,您必須對資料進行預處理。
uj5u.com熱心網友回復:
是否在第一行列印列標簽?如果是這樣,那么您會進行適當的資料分配,因此從第二行 array[1:,:] 開始分配陣列,否則嘗試查看它并查看“Mme”字串的位置,以便您了解代碼是如何獲取它的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/388059.html
標籤:蟒蛇-3.x 熊猫 机器学习 scikit-学习 卡格
