【问题标题】:Standardize variables in Python在 Python 中标准化变量
【发布时间】:2020-10-16 07:47:29
【问题描述】:

我有以下代码:

var_list = ['a', 'b', 'c', 'd', 'd', 'e', 'f', 'g', 'h', 'i']
    
y_var = 'lp'
for x_var in var_list:
    formula = y_var + ' ~ ' + x_var
    results = smf.ols(formula, data=df).fit()

我想标准化列表中的变量并重新配置我的循环以改用标准化变量。

我自己没有任何代码。我搜索了一下,发现以下代码https://medium.com/@rrfd/standardize-or-normalize-examples-in-python-e3f174b65dfc 进行了转换:

from sklearn import preprocessing
import numpy as np

# Get dataset
df = pd.read_csv("https://storage.googleapis.com/mledudatasets/california_housing_train.csv", sep=",")# Normalize total_bedrooms column

# Create the Scaler object
scaler = preprocessing.StandardScaler()

# Fit your data on the scaler object
scaled_df = scaler.fit_transform(df)
scaled_df = pd.DataFrame(scaled_df, columns=names)

【问题讨论】:

  • 你用的是什么库?
  • sklearn - 使用 StandardScaler 完成标准化

标签: python standardized


【解决方案1】:

这个呢? (警告:代码未经测试)

from sklearn import preprocessing
import numpy as np

# function that returns the scaled dataframe
def scale_df(df):

    # Get column names first
    names = df.columns

    # Create the Scaler object
    scaler = preprocessing.StandardScaler()

    # Fit your data on the scaler object
    scaled_df = scaler.fit_transform(df)

    return pd.DataFrame(scaled_df, columns=names)

# suppose you have two df's that need to be scalled
df_1 = pd.read_csv("https://storage.googleapis.com/mledudatasets/california_housing_train.csv", sep=",")
df_2 = pd.read_csv("https://storage.googleapis.com/mledudatasets/california_housing_train.csv", sep=",")

var_list = ['a', 'b', 'c', 'd', 'd', 'e', 'f', 'g', 'h', 'i']
results = []

# loop dataframes
for df in [df_1, df_2]:
    scaled_df = scale_df(df)
    
    # loop variables
    y_var = 'lp'
    for x_var in var_list:
        formula = y_var + ' ~ ' + x_var
        results.append(smf.ols(formula, data=scaled_df).fit())

结果将附加到列表results

【讨论】:

  • 但是,我不完全理解您所说的“标准化变量”是什么意思。
  • 嗨,卡洛斯,感谢您的评论。标准化均值将变量重新缩放为均值为零,标准差为 1;这就是我希望通过 var_list 中的变量实现的目标。我发现这可以使用 sklearn 的预处理来完成。我不确定如何遍历变量列表中每个变量的重新缩放
  • 你可以为一个变量做吗?没有循环的代码会是什么样子(只有一个变量)?
  • 你好,卡洛斯。添加了来自另一个网站的示例代码以显示我想要做什么。
  • 不错。我会看看那个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-02
  • 1970-01-01
  • 2020-10-24
  • 1970-01-01
  • 2018-05-19
相关资源
最近更新 更多