Untitled

 avatar
unknown
plain_text
2 years ago
2.6 kB
3
Indexable
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import Pipeline
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, recall_score, precision_score, confusion_matrix

# Преобразование целевой переменной в бинарный формат
ferma_main['vkus_milk'] = ferma_main['vkus_milk'].apply(lambda x: 1 if x == 'вкусно' else 0)

# Выделение в отдельные переменные целевого признака и входных признаков
X = ferma_main.drop(columns=['vkus_milk'])
y = ferma_main['vkus_milk']

# Разделение данных на тренировочные и тестовые, зафиксируем random_state
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=RANDOM_STATE)

# Список категориальных признаков
cat_col_names = ['poroda', 'type_pastbicha', 'poroda_dad_bull', 'age', 'name_dad']

# Список количественных признаков
num_col_names = ['eke', 'syroi_protein_g', 'spo', 'ghirnost_per', 'belok_per']

# Подготовка признаков (масштабирование и кодирование)
encoder = OneHotEncoder(drop='first', sparse=False)
scaler = StandardScaler()

# Создание transformer для категориальных и количественных признаков
preprocessor = ColumnTransformer(
    transformers=[
        ('cat', encoder, cat_col_names),
        ('num', scaler, num_col_names)
    ])

# Создание пайплайна с преобразованием и обучением модели
model_lr = LogisticRegression(random_state=RANDOM_STATE, max_iter=1000)
pipeline = Pipeline([
    ('preprocessor', preprocessor),
    ('model', model_lr)
])

# Обучение модели
pipeline.fit(X_train, y_train)

# Получение предсказаний
predictions = pipeline.predict(X_test)

# Оценка качества модели
accuracy = accuracy_score(y_test, predictions)
recall = recall_score(y_test, predictions)
precision = precision_score(y_test, predictions)
conf_matrix = confusion_matrix(y_test, predictions)

# Вывод результатов
print("Accuracy:", accuracy)
print("Recall:", recall)
print("Precision:", precision)
print("Confusion Matrix:")
print(conf_matrix)
Editor is loading...
Leave a Comment