❤️ ❤️ ❤️ 爆:使用ChatGPT+Streamlit快速构建机器学习数据集划分应用程序!!!

❤️ ❤️ ❤️ 爆:使用ChatGPT+Streamlit快速构建机器学习数据集划分应用程序!!!

ChatGPT 对于 Python 程序员有用吗?特别是我们这些使用 Python 进行数据处理、数据清洗和构建机器学习模型的人?我们试试就知道了。

来自 OpenAI 的 ChatGPT 是什么?假设你已经知道了。网上铺天盖地的宣传呐喊,我想不再需要介绍了。加入您碰巧不知道 ChatGPT 是什么,赶快去查查,不然会被人嘲笑的,然后再回来继续。

与 ChatGPT 的对话可以是有趣的,甚至是有启发性的。但是让我们看看它实际上有多大帮助。

让我们看看 ChatGPT 在根据我们提供的规范编写代码时能做些什么。我们将从简单开始,并从那里开始构建。

一、简单数据集处理脚本

我认为最好从某种数据处理脚本开始。因为我打算稍后让 ChatGPT 使用各种 Python 库编写一些机器学习脚本,所以这似乎是一个合理的起点。

1.目标

首先,我想尝试加载一个数据集; 确保所有数据集值都是数值,或者将它们转换为数值; 检查缺失的值; 并将数据集分割为训练集和测试集。

2.用户提示

Write a Python script that does the following:
- loads a dataset from csv on disk to Pandas DataFrame
- ensures that dataset is entirely numeric; converts string values to numeric and tracks this conversion in a dictionary to reference later
- checks for missing values in the DataFrame and imputes missing values for any record that has one missing value; entirely drops a record that has more than one missing value
- splits the dataset into test and training sets

编写一个 Python 脚本,执行以下操作:

- 将磁盘上的 csv 数据集加载到 Pandas DataFrame

- 确保数据集完全是数字; 将字符串值转换为数字,并在字典中跟踪这种转换,以便以后引用

- 检查 DataFrame 中是否缺少值,并为缺少一个值的任何记录计算缺少值; 完全删除一个缺少多个值的记录

- 将数据集分成测试集和训练集

3.GhatGPT返回代码

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split# Load the dataset from csv to a Pandas DataFrame
df = pd.read_csv("dataset.csv")# Ensure the dataset is entirely numeric
# Convert string values to numeric and track this conversion in a dictionary to reference later
string_columns = df.columns[df.dtypes == 'object']
string_to_numeric = {}
for column in string_columns:unique_values = df[column].unique()mapping = {value: i for i, value in enumerate(unique_values)}string_to_numeric[column] = mappingdf[column] = df[column].map(mapping)# Check for missing values in the DataFrame
missing_values = df.isna().sum()# Impute missing values for any record that has one missing value; entirely drop a record that has more than one missing value
for column, missing_value_count in missing_values.items():if missing_value_count == 1:df[column].fillna(df[column].mean(), inplace=True)elif missing_value_count > 1:df.dropna(subset=[column], inplace=True)# Split the dataset into test and training sets
train_data, test_data, train_target, test_target = train_test_split(df.drop('target', axis=1), df['target'], test_size=0.2, random_state=0)

注意: 此脚本假定目标变量存储在 DataFrame 中名为 target 的列中。您需要根据数据集的结构修改此代码。

4.结果分析

ChatGPT 生成了一个有用的脚本。它可以加载一个data.csv的数据集,以及训练集/测试集分割的比例,并记录了这两点以及如果需要的话如何更改它们。总的来说,任务完成了。


二、重构我们的代码

1.目标

现在我们已经有了一个执行某些操作的脚本,让我们对它进行一些重构。良好编码的基础是使用函数来组织逻辑代码,促进重用,并确保您不会重复。

2.用户提示

Rewrite the above script to use a series of functions that make sense

重写上面的脚本,使用一系列有意义的函数

3.GhatGPT返回代码

Here’s the script refactored into a series of functions that make sense:

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_splitdef load_dataset(filepath):"""Loads a dataset from a csv file to a Pandas DataFrame"""return pd.read_csv(filepath)def convert_to_numeric(df):"""Ensures the dataset is entirely numeric and converts string values to numeric"""string_columns = df.columns[df.dtypes == 'object']string_to_numeric = {}for column in string_columns:unique_values = df[column].unique()mapping = {value: i for i, value in enumerate(unique_values)}string_to_numeric[column] = mappingdf[column] = df[column].map(mapping)return df, string_to_numericdef handle_missing_values(df):"""Handles missing values by imputing a mean for records with one missing value, and dropping records with more than one missing value"""missing_values = df.isna().sum()for column, missing_value_count in missing_values.items():if missing_value_count == 1:df[column].fillna(df[column].mean(), inplace=True)elif missing_value_count > 1:df.dropna(subset=[column], inplace=True)return dfdef split_dataset(df, target_column, test_size=0.2, random_state=0):"""Splits the dataset into test and training sets"""train_data, test_data, train_target, test_target = train_test_split(df.drop(target_column, axis=1), df[target_column], test_size=test_size, random_state=random_state)return train_data, test_data, train_target, test_target# Load the dataset from csv to a Pandas DataFrame
df = load_dataset("dataset.csv")# Convert string values to numeric and handle missing values
df, string_to_numeric = convert_to_numeric(df)
df = handle_missing_values(df)# Split the dataset into test and training sets
train_data, test_data, train_target, test_target = split_dataset(df, "target")

Note: This script assumes that the target variable is stored in a column named target in the DataFrame. You’ll need to modify this code based on the structure of your dataset.

在这里,ChatGPT使用了四个函数:

1.load_dataset(filepath) :加载 csv 数据集

2.convert_to_numeric(df) :将字符串值转换为数值。

3.handle_missing_values(df):处理数据集中缺少的值。

4.split_dataset(df, target_column, test_size=0.2, random_state=0) :将数据集划分为测试集和训练集。

测试样例使用这些函数来加载、转换和清理数据集,然后将其拆分为测试集和训练集。

数据集的路径和测试比例是这些函数的输入。

4.结果分析

我们从 ChatGPT 的第一个脚本可以看出一些非常明显的逻辑代码块,可以将这些代码块按功能封装成函数。ChatGPT 做了我期望它做的事情。同样,生成了一个合格的脚本。

三、扩展我们的代码

1.目标

我们的脚本现在看起来好看点了,因为它使用了一些函数。接下来,让我们稍微扩展一下脚本,以便用户可以在运行脚本时指定一些参数。

2.用户提示

Rewrite the above program to solicit the following from the command line in the form of arguments, and use them in the program:
- the path/name of the dataset csv file
- the train/test split size
- the threshold for the number of missing values per record to drop after which to drop entire record, instead of imputing the missing values

重写上面的程序,以参数的形式从命令行获取以下内容,并在程序中使用它们:

- 数据集 csv 文件的路径/名称

- 训练集/测试集的分割比例

- 每条记录丢失值数量的阈值,在该阈值之后删除整条记录,而不是输入丢失值

3.GhatGPT返回代码

Here’s the script refactored to solicit the arguments from the command line:

import pandas as pd
import numpy as np
import argparse
from sklearn.model_selection import train_test_splitdef load_dataset(filepath):"""Loads a dataset from a csv file to a Pandas DataFrame"""return pd.read_csv(filepath)def convert_to_numeric(df):"""Ensures the dataset is entirely numeric and converts string values to numeric"""string_columns = df.columns[df.dtypes == 'object']string_to_numeric = {}for column in string_columns:unique_values = df[column].unique()mapping = {value: i for i, value in enumerate(unique_values)}string_to_numeric[column] = mappingdf[column] = df[column].map(mapping)return df, string_to_numericdef handle_missing_values(df, missing_value_threshold):"""Handles missing values by imputing a mean for records with one missing value, and dropping records with more than one missing value"""missing_values = df.isna().sum()for column, missing_value_count in missing_values.items():if missing_value_count <= missing_value_threshold:df[column].fillna(df[column].mean(), inplace=True)elif missing_value_count > missing_value_threshold:df.dropna(subset=[column], inplace=True)return dfdef split_dataset(df, target_column, test_size=0.2, random_state=0):"""Splits the dataset into test and training sets"""train_data, test_data, train_target, test_target = train_test_split(df.drop(target_column, axis=1), df[target_column], test_size=test_size, random_state=random_state)return train_data, test_data, train_target, test_targetif __name__ == '__main__':# Define the command line argumentsparser = argparse.ArgumentParser(description='Handles missing values and splits a dataset into test and training sets')parser.add_argument('filepath', type=str, help='The path/name of the dataset csv file')parser.add_argument('test_size', type=float, help='The test/train split size')parser.add_argument('missing_value_threshold', type=int, help='The number of missing values per record after which to drop the entire record, instead of imputing the missing values')args = parser.parse_args()# Load the dataset from csv to a Pandas DataFramedf = load_dataset(args.filepath)# Convert string values to numeric and handle missing valuesdf, string_to_numeric = convert_to_numeric(df)df = handle_missing_values(df, args.missing_value_threshold)# Split the dataset into test and training setstrain_data, test_data, train_target, test_target = split_dataset(df, df.columns[-1], test_size=args.test_size)

This script can be run from the command line with the following command format:

python script_name.py filepath test_size missing_value_threshold 

4.结果分析

老实说,这里不需要太多的分析,因为 ChatGPT 的注释已经很好地解释了它的功能。他竟然告诉我们该怎么执行代码!!!

四、将我们的代码转换为一个 Streamlit 应用程序

1.目标

现在,让假设我们想让这段代码在应用程序中使用。让 ChatGPT 将这些函数包装到 Streamlit 应用程序中。

2.用户提示

Rewrite the above program as a Streamlit app, allowing for the user to provide the same arguments as in the command line args above

将上面的程序重写为 Streamlit 应用程序,允许用户提供与上面命令行 args 中相同的参数

3.GhatGPT返回代码

Here’s the script refactored as a Streamlit app:

import streamlit as st
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_splitdef load_dataset(filepath):"""Loads a dataset from a csv file to a Pandas DataFrame"""return pd.read_csv(filepath)def convert_to_numeric(df):"""Ensures the dataset is entirely numeric and converts string values to numeric"""string_columns = df.columns[df.dtypes == 'object']string_to_numeric = {}for column in string_columns:unique_values = df[column].unique()mapping = {value: i for i, value in enumerate(unique_values)}string_to_numeric[column] = mappingdf[column] = df[column].map(mapping)return df, string_to_numericdef handle_missing_values(df, missing_value_threshold):"""Handles missing values by imputing a mean for records with one missing value, and dropping records with more than one missing value"""missing_values = df.isna().sum()for column, missing_value_count in missing_values.items():if missing_value_count <= missing_value_threshold:df[column].fillna(df[column].mean(), inplace=True)elif missing_value_count > missing_value_threshold:df.dropna(subset=[column], inplace=True)return dfdef split_dataset(df, target_column, test_size=0.2, random_state=0):"""Splits the dataset into test and training sets"""train_data, test_data, train_target, test_target = train_test_split(df.drop(target_column, axis=1), df[target_column], test_size=test_size, random_state=random_state)return train_data, test_data, train_target, test_targetdef main():"""Main function for the Streamlit app"""st.title("Dataset Preprocessing App")# Get the file path, test size, and missing value threshold from the userfile_path = st.text_input("Enter the path/name of the dataset csv file:")test_size = st.slider("Enter the test/train split size:", 0.0, 1.0, 0.2)missing_value_threshold = st.slider("Enter the number of missing values per record after which to drop the entire record, instead of imputing the missing values:", 0, 100, 1)# Load the dataset and convert string values to numericdf = load_dataset(file_path)df, string_to_numeric = convert_to_numeric(df)# Handle missing valuesdf = handle_missing_values(df, missing_value_threshold)# Split the dataset into test and training setstrain_data, test_data, train_target, test_target = split_dataset(df, df.columns[-1], test_size=test_size)# Show the final processed datast.write("Processed Dataset:")st.write(df)st.write("Train Data:")st.write(train_data)st.write("Train Target:")st.write(train_target)st.write("Test Data:")st.write(test_data)st.write("Test Target:")st.write(test_target)
if name == 'main':main()

To run the Streamlit app, you can save the above code in a .py file and run it in the command line with the following command:

要运行 Streamlit 应用程序,可以将上面的代码保存在‘.py‘ 文件中,并使用以下命令在命令行中运行它:

streamlit run file_name.py

4.结果分析

它做了它该做的事。ChatGPT 利用我们的功能,建立了一个简单的 Streamlit Web应用。

五、总结

完成以上四步之后,我们检验下代码是否可以正常运行,需要做一下几步操作:

1、安装streamlit 库

pip install streamlit

2、安装 scikit-learn库

pip install scikit-learn

3、开开心心的执行

streamlit run main.py

vscode代码:
在这里插入图片描述
运行的web程序:
在这里插入图片描述

搞定!NB class ChatGPT!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/7940.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

炸锅了!又一 VSCode 神器面世!!!

来自机器之心 在项目开发中&#xff0c;优秀的代码自动补全工具可以提升工作效率。然而&#xff0c;传统的 IDE 基本都使用搜索方法进行补全&#xff0c;在一些场景下效果不佳。 GitHub 和 OpenAI 联合发布了新的 AI 代码补全工具 GitHub Copilot&#xff0c;并展示了技术预览版…

vscode终端无法使用命令

提示错误&#xff1a;ng : 无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\ng.ps1&#xff0c;因为在此系统上禁止运行脚本。 解决办法&#xff1a; 管理员身份运行 Windows PowerShell 再次回到vscode&#xff0c;可以执行了。 大功告成&#xff01;&#xff01…

在VScode的终端出现无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\vue.ps1

换了新电脑&#xff0c;node和npm安装成功&#xff0c;版本也能查询成功。在cmd中安装的vue脚手架&#xff0c;输入vue -V时可以查到版本&#xff0c;但是在vscode终端输入vue -V出现的这样的错误&#xff1a;无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\vue.ps1…

文心一言真的能够取代chatGPT吗?

最近人工智能聊天机器人可太火了&#xff0c;尤其是微软的 ChatGPT&#xff0c;自发布以来&#xff0c;网上反响热烈。太牛逼了&#xff0c;感觉可以取代好多人的工作了。 雷军说:“站在台风口,猪都能飞上天&#xff01;”所以国内大厂纷纷布局&#xff0c;百度先人一步&#x…

我让 ChatGPT 化身为全知全能的文档小助理,啥姿势她都会......

ChatGPT 虽然只是一个对话型人工智能&#xff0c;但已经震惊了全世界&#xff0c;有人甚至认为人工智能的奇点已经到来。未来一定会有很多人失业&#xff0c;从工业革命开始&#xff0c;每出现一次重大的技术变革&#xff0c;就必然会有一批人失业&#xff0c;我们要直面现实&a…

ChatGPT is not all you need,一文看尽SOTA生成式AI模型:6大公司9大类别21个模型全回顾(一)

文章目录 ChatGPT is not all you need&#xff0c;一文看尽SOTA生成式AI模型&#xff1a;6大公司9大类别21个模型全回顾&#xff08;一&#xff09;Text-to-Image 模型DALL-E 2IMAGENStable DiffusionMuse Text-to-3D 模型DreamfusionMagic3D ChatGPT is not all you need&…

生成式AI,ChatGPT和自动驾驶的技术趋势漫谈

作者丨Dr.Luo 来源丨佐思汽车研究 编辑丨集智书童 作者简介&#xff1a; Dr. Luo&#xff0c;东南大学工学博士&#xff0c;英国布里斯托大学博士后&#xff0c;是复睿微电子英国研发中心GRUK首席AI科学家&#xff0c;常驻英国剑桥。Dr. Luo长期从事科学研究和机器视觉先进产…

chatGPT常见问题解决-An error occurred. If this issue persists please contact us through our...

文章目录 遇到问题解决方案1操作方法关闭安全访问关闭浏览器如果再次遇到问题解决方案2使用火狐浏览器遇到问题 An error occurred. If this issue persists please contact us through our help center at help.openai.com. 解决方案1 操作方法 关闭安全访问

华为天才少年稚晖君被曝离职;苹果 A16“挤牙膏”原因曝光;​Ruby 3.2.0 发布|极客头条...

「极客头条」—— 技术人员的新闻圈&#xff01; CSDN 的读者朋友们早上好哇&#xff0c;「极客头条」来啦&#xff0c;快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 梦依丹 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 一分钟速览新闻点&#…

互联网晚报 | 奇瑞汽车回应要求员工周六上班;好欢螺回应妇女节争议文案;TVB淘宝首播带货2350万...

奇瑞汽车回应要求员工周六上班&#xff1a;本意不是压榨员工&#xff0c;鼓励愿意努力的奋斗 “周六是奋斗者的正常工作日&#xff0c;对于行政领导必须是正常工作日&#xff0c;请想办法规避法律风险。”3月7日&#xff0c;奇瑞汽车执行副总经理高新华要求周六上班的内部邮件引…

聚观早报|九安医疗从硅谷银行取回6亿存款;商汤科技发布通用大模型

今日要闻&#xff1a;九安医疗从硅谷银行取回6亿存款&#xff1b;OpenAI推出GPT-4更精准解决问题&#xff1b;iPhone 14/Plus黄色版开售即破发&#xff1b;消息称英伟达RTX 4070显卡即将上市&#xff1b;商汤科技发布多模态通用大模型 九安医疗从硅谷银行取回6亿存款 3 月 14…

第一台被“越狱”的 iPhone | 历史上的今天

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2023 年 7 月 10 日&#xff0c;在 1856 年的今天&#xff0c;交流电的发明者尼古拉特斯拉&#xff08;Nikola Tesla&#xff09;出生。特斯拉被认为是电力商业化的重要…

音视频技术开发周刊 | 285

每周一期&#xff0c;纵览音视频技术领域的干货。 新闻投稿&#xff1a;contributelivevideostack.com。 GPT-4 Office全家桶发布 谷歌前脚刚宣布AI工具整合进Workspace&#xff0c;微软后脚就急匆匆召开了发布会&#xff0c;人狠话不多地祭出了办公软件王炸——Microsoft 365 …

美团以 20.65 亿人民币收购光年之外;ChatGPT 涉嫌信息盗窃被起诉;OpenCV 4.8.0 发布|极客头条...

「极客头条」—— 技术人员的新闻圈&#xff01; CSDN 的读者朋友们早上好哇&#xff0c;「极客头条」来啦&#xff0c;快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 梦依丹 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 一分钟速览新闻点&#…

训练个人专属ChatGPT!港科大开源LMFlow:3090单卡5小时

本文来源 机器之心编辑部 拥有自己的 AI 大模型&#xff01;开源项目 LMFlow 支持上千种模型&#xff0c;提供全流程高效训练方案。 2022 年 11 月 30 日&#xff0c;OpenAI 推出 ChatGPT&#xff0c;令人没想到的是&#xff0c;这个对话模型在 AI 圈掀起一股又一股讨论狂潮。…

Open AI官方「ChatGPT 打假工具」来啦!网友:等于瞎猜?

文&#xff5c;Alex 鱼羊 发自 凹非寺源&#xff5c;量子位 ChatGPT到处“造假”作弊&#xff0c;现在搞得OpenAI官方都坐不住了。 就在今天&#xff0c;OpenAI紧急发布官方打假工具&#xff1a;基于GPT打造&#xff0c;打开网页就能用。 好家伙&#xff0c;这岂不是真以己之矛…

ChatGPT最新版多功能批量写作工具激发创作的无限可能

随着科技的不断发展&#xff0c;人工智能逐渐渗透到各个领域&#xff0c;其中包括写作领域。近年来&#xff0c;OpenAI推出的ChatGPT最新版多功能批量写作工具&#xff0c;为写作者们带来了全新的创作体验。这一工具不仅能够帮助写作者提高工作效率&#xff0c;还能够激发创作的…

一个开源的 ChatGPT VSCode 插件

点击“开发者技术前线”&#xff0c;选择“星标” 让一部分开发者看到未来 来自&#xff1a;Github中文社区 近在百度推出文心一言后 阿里也开启了自家的ChatGPT的内测邀请&#xff0c;因此接下来的一个月huber会陆续给大家带来ChatGPT及周边内容。 vscode-ChatGPT 今天给大家推…

【VS】VSCode设置中英文模式

Vscode是一款开源的跨平台编辑器。默认情况下&#xff0c;vscode使用的语言为英文(us)&#xff0c;如何将其显示语言修改成中文。 使用快捷键组合【CtrlShiftp】&#xff0c;在搜索框中输入“configure display language”&#xff0c;点击确定后&#xff1b; 修改locale.json…

工具 | VSCode+ChatGPT 编程利器

本文首发微信公众号&#xff1a;全副武装的大师兄&#xff08;一个分享前沿技术&#xff0c;生活感受的公众号&#xff0c;关注我&#xff0c;率先了解好玩的工具&#xff09; 托了GPT同学的福&#xff0c;最近编程时&#xff0c;常会在ChatGPT中说明自己的需求以生成代码&…