Untitled

mail@pastecode.io avatar
unknown
plain_text
a month ago
2.0 kB
3
Indexable
Never
num_columns = [c for c in df_housing.columns if c != 'ocean_proximity']
cat_features = 'ocean_proximity'
num_features = [c for c in num_columns if c != 'median_house_value']
target = 'median_house_value'
#предсказываем median_house_value

stages = []

#преобразование категориальных переменных: ocean_proximity
cat_features = ['ocean_proximity']
for categoricalCol in cat_features:
    #преобразование категориальных колонок в бинарные вектора 
    stringIndexer = StringIndexer(inputCol = categoricalCol,
                                  outputCol = categoricalCol + 'Index',
                                  handleInvalid = 'keep')
    encoder = OneHotEncoder(inputCol=stringIndexer.getOutputCol(),
                            outputCol=categoricalCol + "classVec")
    stages += [stringIndexer, encoder]
    
#преобразование числовых переменных
for numCol in num_features:
    numerical_assembler = VectorAssembler(inputCols=numCol,
                                      outputCol='numerical_features')
    df_housing = numerical_assembler.transform(df_housing)

    standard_scaler = StandardScaler(inputCol=numCol,
                                 outputCol='numerical_features_scaled')
    df_housing = standard_scaler.fit(df_housing).transform(df_housing)

#преобразование нескольких колонок в вектор-колонку - признаки
assembler = VectorAssembler(inputCols=assemblerInputs, outputCol="features")
stages += [assembler]

## делим данные на обучающую и тестовую выборки (30% тестовая)
(trainingData, testData) = df_housing.randomSplit([0.7, 0.3])

#тренируем модель 
Linear = LinearRegression(featuresCol="features", labelCol=target, maxIter=10)
stages += [Linear]
# задаем план stages для обучения модели 
pipeline = Pipeline(stages=stages)
Leave a Comment