亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用panda.read_csv從python中的csv文件導入數據?

如何使用panda.read_csv從python中的csv文件導入數據?

紅顏莎娜 2022-06-28 15:37:47
我正在嘗試使用 scikit_learn 和 pandas 解決 python 中的決策樹問題。數據集以 CSV 文件的形式提供。當我嘗試在 python 中加載數據時,我收到一條錯誤消息,顯示“ValueError:無法將字符串轉換為浮點數:'CustomerID'”。我不知道我在代碼中做錯了什么。import pandas as pdfrom sklearn.tree import DecisionTreeClassifierfrom sklearn.model_selection import train_test_splitfrom sklearn import metricscol_names=['CustomerID','Gender','Car Type', 'Shirt Size','Class']pima=pd.read_csv("F:\Current semster courses\Machine Learning\ML_A1_Fall2019\Q2_dataset.csv",header=None, names=col_names)pima.head()feature_cols=['CustomerID','Gender','Car Type', 'Shirt Size']X=pima[feature_cols]y=pima.ClassX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1)clf = DecisionTreeClassifier()# Train Decision Tree Classiferclf = clf.fit(X_train,y_train)#Predict the response for test datasety_pred = clf.predict(X_test)print("Accuracy:",metrics.accuracy_score(y_test, y_pred))有人可以告訴我我做錯了什么嗎?數據集:CustomerID  Gender  Car Type    Shirt Size  Class1            M      Family       Small      C02            M      Sports       Medium     C03            M      Sports       Medium     C04            M      Sports       Large      C05            M      Sports     Extra Large  C06            M      Sports     Extra Large  C07            F      Sports       Small      C08            F      Sports       Small      C09            F      Sports       Medium     C010           F      Luxury       Large      C011           M      Family       Large      C112           M      Family     Extra Large  C113           M      Family       Medium     C114           M      Luxury    Extra Large   C115           F      Luxury       Small      C116           F      Luxury       Small      C117           F      Luxury       Medium     C118           F      Luxury       Medium     C119           F      Luxury       Medium     C120           F      Luxury       Large      C1
查看完整描述

1 回答

?
眼眸繁星

TA貢獻1873條經驗 獲得超9個贊

啊。好的。問題是您的數據是分類數據,scikit不能直接使用。它首先需要轉換為數字數據。該方法._get_dummies()通過獲取具有多個分類值的單列并將其轉換為多列,每列包含一個數字 1 或 0,指示哪個類別是否為“真”。


順便說一句,您應該從功能中刪除“客戶 ID”列。它是一個隨機值,與該行是否屬于一個類別無關。


import pandas as pd

from sklearn.tree import DecisionTreeClassifier

from sklearn.model_selection import train_test_split

from sklearn import metrics


col_names=['CustomerID','Gender','Car Type', 'Shirt Size','Class']

data = [['1',  'M', 'Family', 'Small',      'C0'], 

        ['2',  'M', 'Sports', 'Medium',     'C0'], 

        ['3',  'M', 'Sports', 'Medium',     'C0'], 

        ['4',  'M', 'Sports', 'Large',      'C0'], 

        ['5',  'M', 'Sports', 'Extra Large','C0'], 

        ['6',  'M', 'Sports', 'Extra Large','C0'], 

        ['7',  'F', 'Sports', 'Small',      'C0'], 

        ['8',  'F', 'Sports', 'Small',      'C0'], 

        ['9',  'F', 'Sports', 'Medium',     'C0'], 

        ['10', 'F', 'Luxury', 'Large',      'C0'], 

        ['11', 'M', 'Family', 'Large',      'C1'], 

        ['12', 'M', 'Family', 'Extra Large','C1'], 

        ['13', 'M', 'Family', 'Medium',     'C1'], 

        ['14', 'M', 'Luxury', 'Extra Large','C1'], 

        ['15', 'F', 'Luxury', 'Small',      'C1']]


#pima=pd.read_csv("F:\Current semster courses\Machine ...

pima=pd.DataFrame(data, columns = col_names)

# Convert the categorical data to multiple columns of numerical data for the decision tree

pima = pd.get_dummies(pima, prefix=['CustomerID','Gender','Car Type', 'Shirt Size','Class'])

print(pima)


#feature_cols=['CustomerID','Gender','Car Type','Shirt Size']

feature_cols=['Gender_F', 'Gender_M',

       'Car Type_Family', 'Car Type_Luxury', 'Car Type_Sports',

       'Shirt Size_Extra Large', 'Shirt Size_Large', 'Shirt Size_Medium',

       'Shirt Size_Small', 'Class_C0', 'Class_C1']

X=pima[feature_cols]

y=pima[['Class_C0', 'Class_C1']]

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1)


print("X_train =", X_train) 

print("X_test =", X_test) 

print("y_train =", y_train)

print("y_test =", y_test )

clf = DecisionTreeClassifier()


# Train Decision Tree Classifer

clf = clf.fit(X_train,y_train)


#Predict the response for test dataset

y_pred = clf.predict(X_test)

print("Accuracy:",metrics.accuracy_score(y_test, y_pred))



查看完整回答
反對 回復 2022-06-28
  • 1 回答
  • 0 關注
  • 193 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號