Регрессия, классификация, кластеризация или обработка естественного языка. ChatGPT поможет вам автоматизировать эти алгоритмы с помощью Python.

Введение

Машинное обучение — это итеративный процесс, который помогает разработчикам и специалистам по данным написать алгоритм для прогнозирования, который позволит предприятиям или отдельным лицам принимать соответствующие решения.

ChatGPT, как многие из вас уже знают, — это ChatBot, который поможет людям избежать поиска в Google и найти ответы на свои вопросы. Кроме того, ходят слухи, что в будущем появится тарифный план из-за высокой стоимости облака, то есть Microsoft Azure.

Хватит болтать. Давайте посмотрим на различные варианты использования ChatGPT, которые помогут вам в машинном обучении.

В этой статье я разделил тему на разные категории и попрошу привести пример из каждой из них.

Таблица содержания

· Introduction
· Regression TaskQuestionChatGPT
· ClassificationQuestionChatGPTControl
· ClusteringQuestionChatGPTTest
· Natural Language ProcessingQuestionChatGPTTest
· Conclusion

Задача регрессии

Предположим, вы получили задачу регрессии и хотите попробовать 5 разных алгоритмов и оценить их одновременно. Сложно, правда?

Давайте спросим ChatGPT.

Но прежде чем начать, позвольте мне предупредить вас!

Постарайтесь быть осторожным в том, что вы хотите от ChatGPT, а также, если вы не хотите проводить дополнительное тестирование, попробуйте попросить ChatGPT написать этот код, используя встроенный набор данных.

Теперь давайте посмотрим.

Вопрос

(Примечание: я добавил без использования бостонского набора данных, потому что после его применения с бостонским набором данных я получил следующую ошибку.)

«Привет, Чат,

Я хочу, чтобы вы написали код, который будет применять 5 различных алгоритмов регрессии с использованием научного набора для обучения на встроенном наборе данных без использования бостонского набора данных».

Хорошо, давайте посмотрим на ответ ChatGPT.

ЧатGPT

Конечно, вот пример того, как применить 5 различных алгоритмов регрессии, используя sci-kit-learn, к встроенному набору данных без использования бостонского набора данных:

from sklearn.datasets import make_regression
from sklearn.linear_model import LinearRegression, Ridge, Lasso, ElasticNet
from sklearn.tree import DecisionTreeRegressor
from sklearn.metrics import mean_absolute_error, mean_squared_error
from sklearn.model_selection import train_test_split
import numpy as np

# Generate the dataset
X, y = make_regression(n_samples=100, n_features=10, noise=0.1)

# Split the data into training and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

# Define a function to train and evaluate the model
def train_and_evaluate(model):
    model.fit(X_train, y_train)
    y_pred = model.predict(X_test)
    mae = mean_absolute_error(y_test, y_pred)
    mse = mean_squared_error(y_test, y_pred)
    print(f'Mean Absolute Error: {mae:.4f}')
    print(f'Mean Squared Error: {mse:.4f}')
    print()

# Instantiate and evaluate the linear regression model
lr = LinearRegression()
print('Linear Regression:')
train_and_evaluate(lr)

# Instantiate and evaluate the Ridge regression model
ridge = Ridge()
print('Ridge Regression:')
train_and_evaluate(ridge)

# Instantiate and evaluate the Lasso regression model
lasso = Lasso()
print('Lasso Regression:')
train_and_evaluate(lasso)

# Instantiate and evaluate the Elastic Net regression model
en = ElasticNet()
print('Elastic Net Regression:')
train_and_evaluate(en)

# Instantiate and evaluate the Decision Tree regression model
dt = DecisionTreeRegressor()
print('Decision Tree Regression:')
train_and_evaluate(dt)

Этот код сгенерирует синтетический набор данных с помощью функции make_regression, разделит этот набор данных на обучающие и тестовые наборы с помощью функции train_test_split, а затем обучит и оценит 5 различных моделей регрессии: линейная регрессия, гребневая регрессия, лассо-регрессия, эластичная сеть. Регрессия и регрессия дерева решений. Используемая метрика оценки представляет собой среднюю абсолютную ошибку и среднеквадратичную ошибку.

Вы можете настроить параметры различных моделей и функцию оценки в соответствии с вашими данными и вариантом использования.

Тест

Теперь, чтобы проверить этот код, я запустил этот код в своей системе; вот результат:

Linear Regression:
Mean Absolute Error: 0.0797
Mean Squared Error: 0.0086

Ridge Regression:
Mean Absolute Error: 2.5718
Mean Squared Error: 10.8794

Lasso Regression:
Mean Absolute Error: 3.7231
Mean Squared Error: 23.4629

Elastic Net Regression:
Mean Absolute Error: 64.7057
Mean Squared Error: 7063.3195

Decision Tree Regression:
Mean Absolute Error: 149.9945
Mean Squared Error: 29096.8970

Результаты действительно хорошие, и код работает.

Классификация

Теперь мы хотим того же в классификации. Но на этот раз я хочу, чтобы он использовал реальный встроенный набор данных, потому что, когда я задаю вопросы ChatGPT, он хочет применить эти алгоритмы к синтетическому набору данных.

Давай продолжим.

Вопрос

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

ЧатGPT

Здесь, как видите, Chatgpt останавливается. Когда вывод длинный, он имеет тенденцию останавливаться. Как мы можем продолжить?

Просто скажите, чтобы он продолжал

Теперь давайте проверим код.

Контроль

Вот полный код.

from sklearn.datasets import load_breast_cancer
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.svm import SVC
from sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier, GradientBoostingClassifier
from sklearn.metrics import accuracy_score, confusion_matrix
from sklearn.model_selection import train_test_split

# Load the breast cancer dataset
data = load_breast_cancer()
X, y = data.data, data.target

# Split the data into training and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

# Define a function to train and evaluate the model
def train_and_evaluate(model):
    model.fit(X_train, y_train)
    y_pred = model.predict(X_test)
    acc = accuracy_score(y_test, y_pred)
    conf = confusion_matrix(y_test, y_pred)
    print(f'Accuracy: {acc:.4f}')
    print(f'Confusion Matrix:\n {conf}')
    print()

# Instantiate and evaluate the Logistic Regression model
lr = LogisticRegression()
print('Logistic Regression:')
train_and_evaluate(lr)

# Instantiate and evaluate the Decision Tree
# Instantiate and evaluate the Decision Tree Classifier model
dt = DecisionTreeClassifier()
print('Decision Tree Classifier:')
train_and_evaluate(dt)

# Instantiate and evaluate the Support Vector Classification model
svc = SVC()
print('Support Vector Classification:')
train_and_evaluate(svc)

# Instantiate and evaluate the Random Forest Classifier model
rf = RandomForestClassifier()
print('Random Forest Classifier:')
train_and_evaluate(rf)

# Instantiate and evaluate the AdaBoost Classifier model
ada = AdaBoostClassifier()
print('AdaBoost Classifier:')
train_and_evaluate(ada)

# Instantiate and evaluate the Gradient Boosting Classifier model
gb = GradientBoostingClassifier()
print('Gradient Boosting Classifier:')
train_and_evaluate(gb)
Logistic Regression:
Accuracy: 0.9561
Confusion Matrix:
 [[35  4]
 [ 1 74]]

Decision Tree Classifier:
Accuracy: 0.9561
Confusion Matrix:
 [[36  3]
 [ 2 73]]

Support Vector Classification:
Accuracy: 0.9298
Confusion Matrix:
 [[32  7]
 [ 1 74]]

Accuracy: 0.9649
Confusion Matrix:
 [[35  4]
 [ 0 75]]

AdaBoost Classifier:
Accuracy: 0.9649
Confusion Matrix:
 [[36  3]
 [ 1 74]]

Gradient Boosting Classifier:
Accuracy: 0.9737
Confusion Matrix:
 [[37  2]
 [ 1 74]]

На самом деле точность не является хорошей оценочной матрицей для классификации.

Почему?

Парадокс точности поиска.

Теперь давайте попросим ChatGPT использовать точность и полноту в качестве показателей оценки.

Кластеризация

Хорошо, давайте продолжим кластеризацию.

Мы действительно проходим через все виды алгоритмов машинного обучения.

Давайте спросим ChatGPT.

Вопрос

Я хочу от вас того же, но на этот раз сделайте кластеризацию с 3 разными алгоритмами, со встроенными наборами данных из реальной жизни.

Именно поэтому ChatGPT уже знает, чего вы от него хотите на данном этапе.

Вот ответ ChatGPT.

ЧатGPT

Конечно, вот пример того, как применить 3 разных алгоритма кластеризации с помощью sci-kit-learn на встроенном реальном наборе данных:

from sklearn.datasets import load_iris
from sklearn.cluster import KMeans, AgglomerativeClustering, DBSCAN
from sklearn.metrics import silhouette_score

# Load the iris dataset
iris = load_iris()
X = iris.data

# Define a function to train and evaluate the model
def train_and_evaluate(model):
    model.fit(X)
    labels = model.labels_
    silhouette = silhouette_score(X, labels)
    print(f'Silhouette Score: {silhouette:.4f}')
    print()

# Instantiate and evaluate the KMeans clustering model
kmeans = KMeans(n_clusters=3)
print('KMeans Clustering:')
train_and_evaluate(kmeans)

# Instantiate and evaluate the Agglomerative Clustering model
agg = AgglomerativeClustering(n_clusters=3)
print('Agglomerative Clustering:')
train_and_evaluate(agg)

# Instantiate and evaluate the DBSCAN clustering model
dbscan = DBSCAN()
print('DBSCAN Clustering:')
train_and_evaluate(dbscan)

Теперь давайте протестируем ChatGPT.

Тест

Output

KMeans Clustering:
Silhouette Score: 0.5528

Agglomerative Clustering:
Silhouette Score: 0.5543

DBSCAN Clustering:
Silhouette Score: 0.4860

Это действительно впечатляет.

Обработка естественного языка

Недавно я работал над личным проектом, который состоит в том, чтобы собирать данные с носителя и затем анализировать их.

Я соскребаю 6к+ статей с носителя. Я загрузил данные в Kaggle, здесь.

После выполнения анализа я хочу провести LDA-анализ столбца заголовка, поэтому я спрашиваю ChatGPT.

Вопрос

Эй, я вычищаю из архива TowardsDataScience более 6 тысяч статей. Я хочу провести LDA-анализ столбца df2[‘title].

ЧатGPT

Вот пример того, как выполнить анализ скрытого распределения Дирихле (LDA) в столбце заголовков набора текстовых данных, который вы извлекли из архива Towards Data Science:

# import necessary libraries
from gensim import corpora, models
from nltk.corpus import stopwords
from nltk.stem.wordnet import WordNetLemmatizer
import string

# create a list of the titles in the dataframe
titles = df2['title'].tolist()

# preprocess the titles by lowercasing, removing punctuation, and lemmatizing
titles_clean = []
for title in titles:
    title = title.lower()
    title = title.translate(title.maketrans('', '', string.punctuation))
    title = [WordNetLemmatizer().lemmatize(word) for word in title.split() if word not in stopwords.words('english')]
    titles_clean.append(title)

# create a dictionary of the titles
dictionary = corpora.Dictionary(titles_clean)

# create a document-term matrix of the titles
doc_term_matrix = [dictionary.doc2bow(title) for title in titles_clean]

# create a LDA model of the titles
lda_model = models.LdaModel(doc_term_matrix, num_topics=5, id2word=dictionary, passes=50)

# print the topics and the top 10 words in each topic
for topic in lda_model.show_topics(formatted=False):
    print('Topic {}:'.format(topic[0]))
    print([word[0] for word in topic[1]])

Тест

Output:
Topic 0:
['network', 'python', 'neural', 'image', '—', 'using', 'deep', 'model', 'classification', 'diffusion']
Topic 1:
['python', 'panda', 'using', 'sql', 'guide', '—', 'regression', 'analysis', 'introduction', 'function']
Topic 2:
['data', 'science', 'scientist', 'strong', 'classmarkupstrong', '—', '5', 'analysis', 'ai', 'know']
Topic 3:
['time', 'series', 'python', 'using', 'model', 'forecasting', 'build', 'ai', 'streamlit', 'inference']
Topic 4:
['learning', 'machine', 'model', 'ml', 'part', 'algorithm', 'deep', 'cloud', 'building', 'optimization']

Здесь вы можете увидеть другой набор тегов тем, которые вы можете проанализировать из названий Towards Data Science 2022.

Заключение

В этой статье я объясню, как использовать ChatGPT в машинном обучении. Это действительно помогает разработчикам автоматизировать задачи машинного обучения.

Спасибо, что прочитали мою статью.

Вот моя шпаргалка по ChatGPT.

Вот моя шпаргалка Numpy.

Вот исходный код проекта данных Как стать миллиардером.

Вот исходный код проекта данных Задача классификации с 6 различными алгоритмами с использованием Python.

Вот исходный код проекта данных Дерево решений в анализе энергоэффективности.

Если вы все еще не являетесь участником Medium и хотите учиться, читая, вот моя реферальная ссылка.

«Машинное обучение — это последнее изобретение, которое когда-либо понадобится человечеству». Ник Бостром