Python 如何标准化数据,使平均值为0?
作为主成分分析的一部分,我正在尝试用Python标准化数据集。到目前为止,我已经做到了以下几点:Python 如何标准化数据,使平均值为0?,python,pandas,Python,Pandas,作为主成分分析的一部分,我正在尝试用Python标准化数据集。到目前为止,我已经做到了以下几点: cancer_data = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data', header=None) cancer_data.columns = ['Sample code', 'Clump Thi
cancer_data = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data', header=None)
cancer_data.columns = ['Sample code', 'Clump Thickness', 'Uniformity of Cell Size', 'Uniformity of Cell Shape',
'Marginal Adhesion', 'Single Epithelial Cell Size', 'Bare Nuclei', 'Bland Chromatin',
'Normal Nucleoli', 'Mitoses','Class']
cancer_data = cancer_data.replace('?', np.NaN)
cancer_data = cancer_data.fillna(cancer_data.median())
classDF = cancer_data['Class']
cancer_data = cancer_data.drop(['Class' ,'Sample code'], axis = 1)
# Standardization of data
standardized = StandardScaler().fit_transform(cancer_data)
x = pd.DataFrame(standardized, columns = cancer_data.columns)
但是,当我检查平均值时,我得到以下输出:
array([-5.08256606e-17, -9.14861892e-17, -3.04953964e-17, 5.08256606e-17,
5.08256606e-17, -8.13210570e-17, 3.04953964e-17, -1.32146718e-16,
-8.13210570e-17])
我不太确定我做错了什么,因为这些值是错误的,所以非常感谢任何帮助(我是数据挖掘新手)。使用标准化公式: 列=要标准化的列
df_std[column] = (df_std[column] - df_std[column].mean()) /
df_std[column].std()
或:
有关更多信息,请阅读:
使用标准化公式: 列=要标准化的列
df_std[column] = (df_std[column] - df_std[column].mean()) /
df_std[column].std()
或:
有关更多信息,请阅读:
这些值实际上为零。只是浮点运算有一些问题<代码>-5.082e-17表示
0.000…0005082
(十六个零)。请参阅以确保:记住中位数和平均值是两个不同的东西。double有53位尾数,约为3.x*17。这些值实际上是零。只是浮点运算有一些问题<代码>-5.082e-17表示0.000…0005082
(十六个零)。请参阅以确保:记住中位数和平均值是两个不同的东西。double有53位尾数,约为3.x*17