AttributeError: 'numpy.ndarray' object has no attribute 'value_counts'
生活随笔
收集整理的這篇文章主要介紹了
AttributeError: 'numpy.ndarray' object has no attribute 'value_counts'
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
《python機器學(xué)習(xí)及實踐》第二章第一個代碼運行報錯:
?AttributeError: 'numpy.ndarray' object has no attribute 'value_counts'?
# coding: utf-8# In[1]:# 導(dǎo)入pandas與numpy工具包。 import pandas as pd import numpy as np# 創(chuàng)建特征列表。 column_names = ['Sample code number', 'Clump Thickness', 'Uniformity of Cell Size', 'Uniformity of Cell Shape', 'Marginal Adhesion', 'Single Epithelial Cell Size', 'Bare Nuclei', 'Bland Chromatin', 'Normal Nucleoli', 'Mitoses', 'Class']# 使用pandas.read_csv函數(shù)從互聯(lián)網(wǎng)讀取指定數(shù)據(jù)。 data = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data', names = column_names )# 將?替換為標準缺失值表示。 data = data.replace(to_replace='?', value=np.nan) # 丟棄帶有缺失值的數(shù)據(jù)(只要有一個維度有缺失)。 data = data.dropna(how='any')# 輸出data的數(shù)據(jù)量和維度。 data.shape# In[2]:# 使用sklearn.cross_valiation里的train_test_split模塊用于分割數(shù)據(jù)。 from sklearn.cross_validation import train_test_split# 隨機采樣25%的數(shù)據(jù)用于測試,剩下的75%用于構(gòu)建訓(xùn)練集合。 X_train, X_test, y_train, y_test = train_test_split(data[column_names[1:10]], data[column_names[10]], test_size=0.25, random_state=33) print "data[column_names[10]]",data[column_names[10]] print "y_train",y_train print "####################################################"# In[3]: print "y_train類型",type(y_train) print "y_test類型",type(y_test)# 查驗訓(xùn)練樣本的數(shù)量和類別分布。 y_train=pd.Series(y_train) y_train.value_counts()# In[4]:# 查驗測試樣本的數(shù)量和類別分布。 y_test=pd.Series(y_test) y_test.value_counts()# In[5]:# 從sklearn.preprocessing里導(dǎo)入StandardScaler。 from sklearn.preprocessing import StandardScaler # 從sklearn.linear_model里導(dǎo)入LogisticRegression與SGDClassifier。 from sklearn.linear_model import LogisticRegression from sklearn.linear_model import SGDClassifier# 標準化數(shù)據(jù),保證每個維度的特征數(shù)據(jù)方差為1,均值為0。使得預(yù)測結(jié)果不會被某些維度過大的特征值而主導(dǎo)。 ss = StandardScaler() X_train = ss.fit_transform(X_train) X_test = ss.transform(X_test)# In[6]:# 初始化LogisticRegression與SGDClassifier。 lr = LogisticRegression() sgdc = SGDClassifier()# 調(diào)用LogisticRegression中的fit函數(shù)/模塊用來訓(xùn)練模型參數(shù)。 lr.fit(X_train, y_train) # 使用訓(xùn)練好的模型lr對X_test進行預(yù)測,結(jié)果儲存在變量lr_y_predict中。 lr_y_predict = lr.predict(X_test)# 調(diào)用SGDClassifier中的fit函數(shù)/模塊用來訓(xùn)練模型參數(shù)。 sgdc.fit(X_train, y_train) # 使用訓(xùn)練好的模型sgdc對X_test進行預(yù)測,結(jié)果儲存在變量sgdc_y_predict中。 sgdc_y_predict = sgdc.predict(X_test)# In[7]:# 從sklearn.metrics里導(dǎo)入classification_report模塊。 from sklearn.metrics import classification_report# 使用邏輯斯蒂回歸模型自帶的評分函數(shù)score獲得模型在測試集上的準確性結(jié)果。 print 'Accuracy of LR Classifier:', lr.score(X_test, y_test) # 利用classification_report模塊獲得LogisticRegression其他三個指標的結(jié)果。 print classification_report(y_test, lr_y_predict, target_names=['Benign', 'Malignant'])# In[8]:# 使用隨機梯度下降模型自帶的評分函數(shù)score獲得模型在測試集上的準確性結(jié)果。 print 'Accuarcy of SGD Classifier:', sgdc.score(X_test, y_test) # 利用classification_report模塊獲得SGDClassifier其他三個指標的結(jié)果。 print classification_report(y_test, sgdc_y_predict, target_names=['Benign', 'Malignant'])# In[ ]:在上面加入以下語句,用來數(shù)據(jù)格式的轉(zhuǎn)化,即可解決該錯誤 y_test=pd.Series(y_test)
總結(jié)
以上是生活随笔為你收集整理的AttributeError: 'numpy.ndarray' object has no attribute 'value_counts'的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 修改pip的源repository
- 下一篇: 通俗地讲清楚fit_transform(