вложение значений с Случайным лесом для числовых столбцов по одному - PullRequest
0 голосов
/ 18 октября 2019

Нужна помощь в понимании части кода

Я новичок в Python. Я работаю над отсутствующими значениями данных из набора данных о ценах на жилье. Мне сказали, что замена пропущенных числовых значений прогнозируемыми значениями является более эффективным способом обработки пропущенных значений. У меня есть фрагмент кода, и я пытаюсь понять строку за строкой.

Я не понимаю эту строку:

if np.array_equal(Y_train, Y_train.astype("int")):

Это мои вопросы:

  1. Почему мы проверяем, равен ли массив
  2. что делает astype("int")?
  3. На основании условия, равны они или нет, как мы решаемиспользовать классификатор или регрессор?

Если бы кто-то мог объяснить, это было бы очень полезно. Заранее спасибо.

from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier

rfr = RandomForestRegressor(n_estimators=100)
rfc = RandomForestClassifier(n_estimators=100)

X_raw = data_num.loc[:,:"SalePrice"]
X_imputed = data_num.loc[:,:"SalePrice"]

for column in X_raw:
    Y = X_raw.loc[:, column]
    X = X_raw.drop(column, axis=1).fillna(-99)

    # ignore columns without missing values
    if Y.isnull().sum() == 0:
        continue  

    X_train = X[~Y.isnull()]
    Y_train = Y[~Y.isnull()]
    X_test = X[Y.isnull()]
     # use classifier or regressor
    if np.array_equal(Y_train, Y_train.astype("int")):
        Y_predicted = rfc.fit(X_train, Y_train).predict(X_test)
    else:
        Y_predicted = rfr.fit(X_train, Y_train).predict(X_test)

    # use '.loc[]' to write data into DataFrame
    X_imputed.loc[Y.isnull(), column] = Y_predicted
...