我想使用此代碼標準化數值數據爲特徵向量:數字數據轉換爲特徵向量
import numpy as np
import pandas as pd
import csv
def clearRegister():
clear_register = []
zero = 0
for i in range(21):
clear_register.append(0)
return clear_register
def header():
clear_register = []
name = 'c'
entry = 1
for i in range(21):
clear_register.append(name+str(entry))
entry += 1
return clear_register
def convert(filename):
clear_dataset = []
clear_dataset.append(header())
with open(filename) as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
clear_register = clearRegister()
clear_register[(int(row["blue1"])-1)] = 1
clear_register[(int(row["blue2"])-1)] = 1
clear_register[(int(row["blue3"])-1)] = 1
clear_register[(int(row["red1"])+9)] = 1
clear_register[(int(row["red2"])+9)] = 1
clear_register[(int(row["red3"])+9)] = 1
這裏是我的csvfile輸入:
row blue1 blue2 blue3 red1 red2 red3 lable
0 1 5 4 6 2 8 0
1 2 3 1 9 4 5 1
. . . . . . . .
3000 5 7 4 3 8 10 1
我期待這樣的輸出(C1- C10爲藍色,C11 - C20爲紅色):
c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 lable
1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0
1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1
. . . . . . . . . . . . . . . . . . . . .
0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 1
C11 - C20是 '紅色' 代表它們都是獨一無二的。如果c1,c5,c10的值爲1,那麼c11,c15,c20就不能有這個值。
我試圖把它稱爲:
df = convert("dataset.csv")
df1 = pd.DataFrame(df)
print(df1)
我得到了這樣的結果:
Empty DataFrame
Columns: []
Index: []
有什麼問題或與代碼欠缺?
有藍天航空公司的posibility = blue2 = blue3,對於紅色也是一樣,你實際需要的是計數?或者答案總是二進制 – DJK
總是二進制。我忘了提及它們對於兩者都不重複(唯一),所以如果c1的值爲1,則作爲紅色c1的代表的c11將不具有相同的值。 –