晕, 我是使用python的新手
首先,我想规范我的代码。当我规范化“ datalatih”时没有问题,但是当我尝试规范化“ datauji”时发生意外。我已经做了一个不同的变量来标准化它们。
这是我的数据:
df = pd.read_csv("datalatihnodummy.csv", sep=';')
我的datalatih [:6]和datauji [6:]
这是我的成功代码:
minperfeature = []
maxperfeature = []
for i in range(len(data.columns)):
minperfeature.append(min(data[data.columns[i]]))
maxperfeature.append(max(data[data.columns[i]]))
print(minperfeature)
print(maxperfeature)
datanormalisasi = datalatih
for i in range(len(datalatih.index)):
for j in range(len(datalatih.columns)):
datanormalisasi.loc[i, datalatih.columns[j]] = (datanormalisasi.loc[i, datalatih.columns[j]] - minperfeature[j]) / (maxperfeature[j] - minperfeature[j])
datanormalisasi
[12、17、12、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0]
[48,135,623,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
0 0.638889 0.652542 0.409165 0.0 1.0 0.0 1.0 1.0 1.0 0.0 1.0 1.0 0.0 0.0 0.0 1.0 1.0 0.0 0.0 0.0 1个 0.000000 0.305085 0.409165 1.0 1.0 0.0 1.0 1.0 1.0 0.0 1.0 0.0 0.0 0.0 1.0 0.0 1.0 1.0 1.0 1.0 2 0.527778 0.500000 0.274959 1.0 1.0 1.0 0.0 1.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 1.0 1.0 0.0 1.0 0.0 3 0.666667 0.042373 0.016367 0.0 1.0 0.0 1.0 1.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 1.0 1.0 1.0 0.0 1.0 4 0.277778 0.000000 0.000000 0.0 1.0 1.0 1.0 1.0 0.0 0.0 1.0 0.0 1.0 1.0 0.0 0.0 1.0 0.0 1.0 1.0 5 1.000000 0.025424 0.018003 1.0 0.0 0.0 1.0 0.0 0.0 1.0 1.0 0.0 1.0 0.0 1.0 1.0 0.0 0.0 0.0 0.0
这是我的错误代码:
datanormalisasiUji = datauji
for i in range(len(datauji.index)):
for j in range(len(datauji.columns)):
datanormalisasiUji.loc[i, datauji.columns[j]] = (datanormalisasiUji.loc[i, datauji.columns[j]] - minperfeature[j]) / (maxperfeature[j] - minperfeature[j])
datanormalisasiUji
结果是
'标签[0]不在[index]'
Idk我的代码中哪里显示错误,我已经使用不同的变量解决了我的问题,但仍然不能
任何人都知道如何解决吗?谢谢^^
答案 0 :(得分:1)
假设您要标准化列:[u'Umur', u'ALT/SGOT', u'AST/SGPT', u'Anoreksia', u'Mual']
因为它们包含数值。
对于最小-最大归一化,请使用以下命令:
df = pd.read_csv("datalatihnodummy.csv", sep=';')
df_new = df.iloc[:,1:6]
df_new.head(3)
Umur ALT/SGOT AST/SGPT Anoreksia Mual
0 35 94 262 0 1
1 12 53 262 1 1
2 31 76 180 1 1
results = df_new - df_new.min() / (df_new.max() - df_new.min())
results
Umur ALT/SGOT AST/SGPT Anoreksia Mual
0 34.666667 93.855932 261.98036 0.0 1.0
1 11.666667 52.855932 261.98036 1.0 1.0
2 30.666667 75.855932 179.98036 1.0 1.0
3 35.666667 21.855932 21.98036 0.0 1.0
4 21.666667 16.855932 11.98036 0.0 1.0
5 47.666667 19.855932 22.98036 1.0 0.0
6 17.666667 134.855932 622.98036 1.0 1.0
7 41.666667 67.855932 11.98036 0.0 0.0
说明:Pandas
很聪明,可以通过键入:df_new.min()
来估计所有列的最小值。
df_new.min()
Umur 12
ALT/SGOT 17
AST/SGPT 12
Anoreksia 0
Mual 0
dtype: int64`