logo

Изграждане на учебен модел в Scikit-learn

Scikit-learn е библиотека на Python с отворен код, която опростява процеса на изграждане на модели за машинно обучение. Той предлага чист и последователен интерфейс, който помага както на начинаещите, така и на опитните потребители да работят ефективно.

  • Поддържа задачи като клъстериране на регресия на класификация и предварителна обработка
  • Прави изграждането на модели бързо и надеждно
  • Предоставя готови за използване инструменти за обучение и оценка
  • Намалява сложността, като избягва ръчното внедряване на алгоритми

Инсталиране и използване на Scikit-learn

Преди да започнем да изграждаме модели, трябва да инсталираме Scikit-учете. Изисква Python 3.8 или по-нова версия и зависи от две важни библиотеки: NumPy и SciPy. Уверете се, че те са инсталирани първо.

За да инсталирате Scikit-learn, изпълнете следната команда:



pip инсталирате -U scikit-learn

string.replaceall java

Това ще изтегли и инсталира най-новата версия на Scikit-learn заедно с нейните зависимости. Нека видим различните стъпки, включени в процеса на изграждане на модел с помощта на библиотека Scikit-learn.

Стъпка 1: Зареждане на набор от данни

Наборът от данни се състои от:

  • Характеристики (X): Входни променливи, които описват данните
  • Цел (y): Стойността, която искаме да предвидим

Scikit-learn предоставя вградени набори от данни като Iris Digits и Boston Housing. Използване на набора от данни на Iris:

опитай да хванеш java
  • load_iris() зарежда данните
  • X съхранява данни за характеристиките
  • y съхранява целеви етикети
  • feature_names и target_names дават описателни имена

Можем да проверим първите няколко реда, за да разберем структурата. За персонализирани набори от данни Pandas обикновено се използва за зареждане на външни файлове като CSV.

Python
from sklearn.datasets import load_iris iris = load_iris() X = iris.data y = iris.target feature_names = iris.feature_names target_names = iris.target_names print('Feature names:' feature_names) print('Target names:' target_names) print('nType of X is:' type(X)) print('nFirst 5 rows of X:n' X[:5]) 

Изход: 

модел1' title=Наборът от данни се зарежда

Понякога трябва да работим върху нашите собствени персонализирани данни, след което зареждаме външен набор от данни. За това можем да използваме библиотека с панди за лесно зареждане и манипулиране на набори от данни.

За това можете да се обърнете към нашата статия за Как да импортирате csv файл в pandas ?

Стъпка 2: Разделяне на набора от данни

За да оценим справедливо даден модел, ние разделяме данните на:

  • Комплект за обучение: Използва се за обучение на модела
  • Набор за тестване: Използва се за оценка на това колко добре се обобщава моделът

С помощта на train_test_split разделяме набора от данни на Iris, така че 60% да е за обучение и 40% за тестване (test_size=0,4). random_state=1 гарантира възпроизводимост.

След разделяне получаваме:

  • X_train y_train -> Данни за обучение
  • X_test y_test -> Данни за тестване

Проверката на формите гарантира, че данните са разделени правилно.

Python
from sklearn.model_selection import train_test_split X_train X_test y_train y_test = train_test_split(X y test_size=0.4 random_state=1) 

Сега нека проверим Форми на разделените данни, за да се гарантира, че и двата набора имат правилни пропорции на данни, като се избягват евентуални грешки при оценката на модела или обучението.

Python
print('X_train Shape:' X_train.shape) print('X_test Shape:' X_test.shape) print('Y_train Shape:' y_train.shape) print('Y_test Shape:' y_test.shape) 

Изход:

rhel срещу centos
модел2' loading='lazy' title=Форма на разделени данни

Стъпка 3: Обработка на категорични данни

Алгоритмите за машинно обучение работят с цифрови входове, така че категоричните (текстови) данни трябва да бъдат преобразувани в числа. Ако не са кодирани правилно, моделите могат да интерпретират погрешно категориите. Scikit-learn предоставя множество методи за кодиране:

1. Кодиране на етикети : Преобразува всяка категория в уникално цяло число. Например в колона с категории като „котка“, „куче“ и „птица“ ще ги преобразува съответно в 0 1 и 2. Този метод работи добре, когато категориите имат смислен ред, като Нисък Среден и Висок.

  • LabelEncoder(): Инициализира се, за да създаде обект на енкодер, който ще преобразува категориални стойности в цифрови етикети.
  • fit_transform(): Този метод първо приспособява енкодера към категориалните данни и след това трансформира категориите в съответните цифрови етикети.
Python
from sklearn.preprocessing import LabelEncoder categorical_feature = ['cat' 'dog' 'dog' 'cat' 'bird'] encoder = LabelEncoder() encoded_feature = encoder.fit_transform(categorical_feature) print('Encoded feature:' encoded_feature) 

Изход:

Кодирана функция: [1 2 2 1 0]

алиса маньонок

2. One-Hot кодиране : One-Hot Encoding създава отделни двоични колони за всяка категория. Това е полезно, когато категориите нямат естествен ред. Пример: котка куче птица -> 3 нови колони (котка/куче/птица) с 1 и 0.

  • Входът трябва да бъде преоформен в 2D масив
  • OneHotEncoder(sparse_output=False) генерира двоични колони
Python
from sklearn.preprocessing import OneHotEncoder import numpy as np categorical_feature = ['cat' 'dog' 'dog' 'cat' 'bird'] categorical_feature = np.array(categorical_feature).reshape(-1 1) encoder = OneHotEncoder(sparse_output=False) encoded_feature = encoder.fit_transform(categorical_feature) print('OneHotEncoded feature:n' encoded_feature) 

Изход:

модел3' loading='lazy' title=

Освен Label Encoding и One-Hot Encoding има и други техники като Средно кодиране .

Стъпка 4: Обучение на модела

Сега, когато нашите данни са готови, е време да обучим модел за машинно обучение. Scikit-learn има много алгоритми с последователен интерфейс за прогнозиране и оценка на обучението. Тук ще използваме Логистична регресия като пример.

Забележка : Няма да навлизаме в подробности за това как работи алгоритъмът, тъй като се интересуваме да разберем само неговото изпълнение. 

  • log_reg = Логистична регресия (max_iter=200): Създаване на обект на класификатор на логистична регресия.
  • log_reg.fit(X_train y_train): Използвайки това логистичният регресионен модел коригира параметрите на модела, за да пасне най-добре на данните.
Python
from sklearn.linear_model import LogisticRegression log_reg = LogisticRegression(max_iter=200) log_reg.fit(X_train y_train) 
модел4' loading='lazy' title=Обучение с помощта на логистична регресия.

Стъпка 5: Направете прогнози

Веднъж обучени, ние използваме модела, за да правим прогнози върху тестовите данни X_test чрез извикване на метода за прогнозиране. Това връща предвидени етикети y_pred.

  • log_reg.predict: Той използва обучен логистичен регресионен модел за прогнозиране на етикети за тестовите данни X_test.
Python
y_pred = log_reg.predict(X_test) 

Стъпка 6: Оценяване на точността на модела

Проверете колко добре се представя нашият модел, като сравните y_test и y_pred. Тук използваме метода accuracy_score на модула за показатели.

java колекция
Python
from sklearn import metrics print('Logistic Regression model accuracy:' metrics.accuracy_score(y_test y_pred)) 

Изход:

Точност на модела на логистична регресия: 0.9666666666666667

Сега искаме нашият модел да прави прогнози за нови примерни данни. Тогава примерният вход може просто да бъде предаден по същия начин, както предаваме всяка матрица на характеристиките. Тук го използвахме като пример = [[3 5 4 2] [2 3 5 4]]

Python
sample = [[3 5 4 2] [2 3 5 4]] preds = log_reg.predict(sample) pred_species = [iris.target_names[p] for p in preds] print('Predictions:' pred_species) 

Изход: 

Прогнози: [np.str_('virginica') np.str_('virginica')]

Характеристики на Scikit-learn

Scikit-learn се използва, защото прави изграждането на модели за машинно обучение лесно и ефективно. Ето някои важни причини:

  1. Готови за употреба инструменти : Осигурява вградени функции за общи задачи като модели за обучение за предварителна обработка на данни и правене на прогнози. Това спестява време, като избягва необходимостта от кодиране на алгоритми от нулата.
  2. Лесна оценка на модела : С инструменти като кръстосано валидиране и показатели за ефективност помага да се измери колко добре работи нашият модел и да се идентифицират области за подобрение.
  3. Поддръжка на широк алгоритъм : Предлага много популярни алгоритми за машинно обучение, включително класификационна регресия и групиране, което ни дава гъвкавост да изберем правилния модел за нашия проблем.
  4. Плавна интеграция : Създаден върху важни библиотеки на Python като NumPy и SciPy, така че да се вписва в нашия съществуващ работен процес за анализ на данни.
  5. Прост и последователен интерфейс : Един и същи прост синтаксис работи в различни модели, което помага за по-лесното научаване и превключване между алгоритми.
  6. Лесна настройка на модела : Инструменти като търсене в мрежа ни помагат да прецизираме настройките на нашия модел, за да подобрим точността без допълнителни проблеми.

Ползи от използването на Scikit-learn

  • Удобен за потребителя : Последователният и прост интерфейс на Scikit-learn го прави достъпен за начинаещи и най-добър за експерти.
  • Спестяване на време: Предварително изградените инструменти и алгоритми намаляват времето за разработка, което ни позволява да се съсредоточим повече върху решаването на проблеми, отколкото върху детайлите на кодирането.
  • По-добра производителност на модела : Лесните за използване инструменти за настройка и оценка помагат за подобряване на точността и надеждността на модела.
  • Гъвкав и мащабируем : Поддържа широк набор от алгоритми и се интегрира безпроблемно с други библиотеки на Python, което го прави подходящ за проекти от всякакъв размер.
  • Силна подкрепа от общността : Голяма активна общност осигурява редовни актуализации, обширна документация и много ресурси, които да ни помогнат, когато се затрудним.
Създаване на тест