首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

建议收藏!变天了!0基础小白逆袭年薪百万的数据科学家的秘笈

不要觉得搞AI,数据科学很高大上,其实你0基础逆袭也可以。因为现在世界变了……现代技术的进步,特别是人工智能(AI)的发展,为我们提供了前所未有的便利。斯坦通过使用ChatGPT来快速启动他的机器学习之旅,向我们展示了这一点。

本文中展示了完全使用ChatGPT构建的机器学习工作流程,从上传CSV格式的数据文件(例如著名的泰坦尼克号数据集)开始,到分步高级说明,最终输出所有指标、统计数据和可视化结果。这一流程不仅涵盖了构建机器学习工作流程、创建图表和重构代码,还包括生成模拟数据集等关键任务。

ChatGPT 已经成为我日常工作中不可或缺的工具。一些常见的用例包括构建机器学习的概念验证模型、重构生产代码、学习新概念以及阅读 PDF 格式的研究论文。这样的例子不胜枚举。

如果您从事数据科学或机器学习领域的工作,ChatGPT 数据分析插件(以前称为高级数据分析(测试版))将是您最好的朋友。

将其视为初级数据科学家和机器学习工程师,非常擅长将您的想法转化为代码。它不仅可以实现代码,还可以做更多的事情。事实证明,它能够自我调试并选择最有效的解决方案。此外,如果您的代码不需要特殊的包,原型制作过程可以在 ChatGPT 网站上运行并返回结果,而无需担心依赖关系。

但是,它仍然需要您的输入(提示)来导航和质量检查结果。经过一些测试,这个插件将成为您数据科学和机器学习之旅中最强大的副驾驶。

在本文中,将演示完全使用 ChatGPT 构建的机器学习工作流程,并且零编码。

输入为:1) CSV 格式的数据文件(使用著名的泰坦尼克号数据集),2) 分步高级说明。输出是您通常在笔记本环境中收到的所有指标、统计数据和可视化结果。

一个有趣的观察是,由于 ChatGPT 对插件响应时间施加 60 秒的限制,因此该插件会自动优化其算法和超参数以加快该过程。对于实际项目,您可以根据自己的喜好调整速度和准确性的权衡。

本文涵盖的关键任务包括构建机器学习工作流程、创建图表、重构代码。

步骤1:选择数据分析并上传数据文件

第二步:通过提示探索数据分析

分类数据的单位变量分析

异常值检测

缺失数据插补

已经测试了几种方法来估算缺失数据,使用一系列提示专门解决缺失的年龄数据。已经有了一些改进。以下是交互地用于测试和检查插补方法的一系列提示的示例:

显示插补前后的年龄直方图。

叠加上面的直方图。

我不喜欢按中位数进行年龄估算;您能推荐另一种方法来估算年龄并重现直方图吗?

你能尝试一下 KNN 和 MICE 插补吗?

您能否修改 MICE 方法以使用其他色谱柱来减少尖峰?

多变量分析:

构建Xgboost分类器:

提示:将数据集随机分割成80/20的百分比;使用80%的数据训练XGBoost模型,并对剩余的20%进行预测;然后报告训练和测试的混淆矩阵。

提示:创建一个显示所用步骤的工作流程图

提示:重构整个代码,使其模块化,适合复用。

import pandas as pdimport numpy as npfrom xgboost import XGBClassifier, plot_importancefrom sklearn.model_selection import train_test_splitfrom sklearn.metrics import f1_score, roc_curve, auc, confusion_matrix, ConfusionMatrixDisplayimport matplotlib.pyplot as pltfrom sklearn.impute import IterativeImputerfrom sklearn.preprocessing import LabelEncoder

def preprocess_data(df): # Handle missing values, drop unwanted features, and encode categorical variables df = df.copy() # Convert 'Sex' and 'Embarked' to categorical df['Sex'] = df['Sex'].astype('category') df['Embarked'] = df['Embarked'].astype('category') # Drop 'PassengerId' df.drop('PassengerId', axis=1, inplace=True) # One-hot encode categorical variables df = pd.get_dummies(df, columns=['Sex', 'Embarked']) return df

def train_model(X, y, params=None): # Initialize and train the XGBoost model if params is None: params = {'n_estimators': 100, 'max_depth': 3, 'random_state': 42, 'use_label_encoder': False, 'eval_metric': 'logloss'} model = XGBClassifier(**params) model.fit(X, y) return model

def evaluate_model(model, X, y, plot_roc=True): # Predict on the data and evaluate y_pred = model.predict(X) f1 = f1_score(y, y_pred) if plot_roc: y_probs = model.predict_proba(X)[:, 1] fpr, tpr, _ = roc_curve(y, y_probs) roc_auc = auc(fpr, tpr) plt.figure(figsize=(8, 6)) plt.plot(fpr, tpr, label=f'AUC = {roc_auc:.2f}') plt.plot([0, 1], [0, 1], 'r--') plt.title('ROC Curve') plt.xlabel('False Positive Rate') plt.ylabel('True Positive Rate') plt.legend(loc='lower right') plt.show() return f1

def display_confusion_matrix(model, X, y): # Display the confusion matrix y_pred = model.predict(X) cm = confusion_matrix(y, y_pred) disp = ConfusionMatrixDisplay(confusion_matrix=cm) disp.plot(cmap=plt.cm.Blues) plt.title('Confusion Matrix') plt.show()

# Example usage:# Load datasetdf = pd.read_csv('path_to_csv')

# Preprocess the datadf_preprocessed = preprocess_data(df)

# Split data into features and targetX = df_preprocessed.drop('Survived', axis=1)y = df_preprocessed['Survived'].astype('category') # Make sure 'Survived' is categorical

# Split data into training and testing setsX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Train the modelmodel = train_model(X_train, y_train)

# Evaluate the modeltrain_f1 = evaluate_model(model, X_train, y_train)test_f1 = evaluate_model(model, X_test, y_test)

# Display confusion matricesdisplay_confusion_matrix(model, X_train, y_train)display_confusion_matrix(model, X_test, y_test)

  • 发表于:
  • 原文链接https://page.om.qq.com/page/Oo2qnKHyIOLdnsC8bU8pxTMQ0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券