三、參考資料
在對cm1資料集(用於defect prediction)預處理的時候,加上label一共是38個特徵,前37個是數字,label是,載入資料集後例項以元組儲存在陣列中,無法通過切片獲取前37個特徵。
載入資料集的**如下:
import numpy as np
from math import pi
import os
from sklearn import preprocessing
path=os.path.split(os.path.abspath(__file__))
[0]filename=path+'/cleaned-cm1.txt'
dt=np.dtype([(
'loc_blank',float),(
'branch_count',float),(
'call_pairs',float),(
'loc_code_and_comment',float),(
'loc_comments',float),(
'condition_count',float),(
'cyclomatic_complexity',float),(
'cyclomatic_density',float),(
'decision_count',float),(
'decision_density',float),(
'design_complexity',float),(
'design_density',float),(
'edge_count',float),(
'essential_complexity',float),(
'essential_density',float),(
'loc_executable',float),(
'parameter_count',float),(
'halstead_content',float),(
'halstead_difficulty',float),(
'halstead_effort',float),(
'halstead_error_est',float),(
'halstead_length',float),(
'halstead_level',float),(
'halstead_prog_time',float),(
'halstead_volume',float),(
'maintenance_severity',float),(
'modified_condition_count',float),(
'multiple_condition_count',float),(
'node_count',float),(
'normalized_cylomatic_complexity',float),(
'num_operands',float),(
'num_operators',float),(
'num_unique_operands',float),(
'num_unique_operators',float),(
'number_of_lines',float),(
'percent_comments',float),(
'loc_total',float),(
'defective',str,1)])
# print(dt)
data_original=np.loadtxt(filename,dtype=dt,comments=
'@',delimiter=
',')
print(data_original.shape)
print(data_original[:3]
)#最小最大規範化
min_max_scaler=preprocessing.minmaxscaler(
)min_max_scaler.feature_range=
(0,10)
#切片data=data_original[:,0:-1]
print(data.shape)
**執行的結果如下:
[running] python -u "/users/schillerxu/documents/sourcecode/python/numpy_test/3.py"
(344,)
[( 6., 9., 2., 1., 0., 16., 5., 0.2 , 8., 2., 3., 0.6, 17., 1., 0., 24., 3., 32.54, 9.5 , 2936.77, 0.1 , 63., 0.11, 163.15, 309.13, 0.2 , 4., 8., 14., 0.16, 19., 44., 15., 15., 32., 4. , 25., 'n'
)(15., 7., 3., 1., 19., 12., 4., 0.13, 6., 2., 2., 0.5, 17., 1., 0., 31., 1., 38.55, 21.52, 17846.19, 0.28, 141., 0.05, 991.46, 829.45, 0.25, 3., 6., 15., 0.06, 51., 90., 32., 27., 67., 39.22, 32., 'y'
)(27., 9., 1., 4., 22., 16., 5., 0.15, 8., 2., 3., 0.6, 18., 1., 0., 29., 0., 52.03, 12.33, 7914.68, 0.21, 111., 0.08, 439.7 , 641.73, 0.2 , 4., 8., 15., 0.06, 37., 74., 33., 22., 83., 47.27, 33., 'y')]
traceback (most recent call last):
file "/users/schillerxu/documents/sourcecode/python/numpy_test/3.py", line 15, in
data=data_original[:,0:-1]
indexerror: too many indices for array
可以看到,每個示例以元組儲存在陣列中,而且切片的時候引數過多。
1、dtype
我們在定義dtype的時候,定義了每列的名字以及儲存的型別,同樣,也可以通過每列的名字獲取這列的資料。
print(data_original[
'loc_blank'
][0:3]
)
執行的效果如下:
剛好能獲取第一列的資料。
這種方法只能少量列的時候用,多了比較麻煩。
2、改變載入的方式
numpy.loadtxt()預設是以float儲存讀取的資料的,所以之前會提前自定義dtype,但是沒法切片操作。為了方便,可以先以str(字串)的形式儲存資料,然後把需要的資料切片轉換成需要的資料格式。
import sys
import numpy as np
path=sys.path[0]
filename=path+'/cleaned-cm1.txt'
data_original=np.loadtxt(filename,dtype=str,comments=
'@',delimiter=
',')
print(data_original[0]
)data=data_original[:,0:-1]
data=data.astype(float)
print(data.shape)
print(data[0]
)
執行的結果如下:
已經取得前37個特徵的資料。
python – 對numpy陣列中存在的元組中的列進行切片
實現資料匯入 匯入模式 匯入案列
匯入模式 模式 引數 說明 操作角色 full full 匯入整個資料庫 imp full database schema schmas 匯入使用者模式中的資料和元資料 imp full database table tables 匯入表和表分割槽的資料和元資料 imp full database ...
集算器匯入excel列數不對
集算器中能匯入excel檔案生成序表,file d employee3.xlsx importxls x 但是匯入時有可能出現,如果excel第一行為空的話,可能匯入的資料列數會少,比如excel中有174列,但是到集算器裡發現,只匯入了171列,經檢視,少匯入的那三列和前邊的也沒有區別。原因,如果...
Keras資料集匯入問題
keras 中文文件 當採用文件推薦方法即如下 匯入資料集時 from keras.datasets import fashion mnist x train,y train x test,y test fashion mnist.load data 如本例的fashion mnist 時尚物品資料...