Регрессия, классификация, кластеризация или обработка естественного языка. ChatGPT поможет вам автоматизировать эти алгоритмы с помощью Python.
Введение
Машинное обучение — это итеративный процесс, который помогает разработчикам и специалистам по данным написать алгоритм для прогнозирования, который позволит предприятиям или отдельным лицам принимать соответствующие решения.
ChatGPT, как многие из вас уже знают, — это ChatBot, который поможет людям избежать поиска в Google и найти ответы на свои вопросы. Кроме того, ходят слухи, что в будущем появится тарифный план из-за высокой стоимости облака, то есть Microsoft Azure.
Хватит болтать. Давайте посмотрим на различные варианты использования ChatGPT, которые помогут вам в машинном обучении.
В этой статье я разделил тему на разные категории и попрошу привести пример из каждой из них.
Таблица содержания
· Introduction · Regression Task ∘ Question ∘ ChatGPT · Classification ∘ Question ∘ ChatGPT ∘ Control · Clustering ∘ Question ∘ ChatGPT ∘ Test · Natural Language Processing ∘ Question ∘ ChatGPT ∘ Test · 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 и хотите учиться, читая, вот моя реферальная ссылка.
«Машинное обучение — это последнее изобретение, которое когда-либо понадобится человечеству». Ник Бостром