您现在的位置是:群英 > 互联网资讯 > 人工智能
ChatGPT有可能取代码农吗?
Admin发表于 2023-06-06 09:10:23300 次浏览
关于“ChatGPT有可能取代码农吗?”的知识点有一些人不是很理解,对此小编给大家总结了相关内容,文中的内容简单清晰,易于学习与理解,具有一定的参考学习价值,希望能对大家有所帮助,接下来就跟随小编一起学习一下“ChatGPT有可能取代码农吗?”吧。

add by zhj: 让我震惊的是,chatGPT竟然可以理解很复杂的需求描述,还会重构代码,加注释,太牛逼了。

 

原文链接:https://blog.csdn.net/jarodyv/article/details/129108277

版权声明:本文为CSDN博主「JarodYv」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

 

简单数据处理

我们首先从简单的任务入手,让ChatGPT完成数据加载和简单的清洗工作。

任务目标

加载数据集;
确保数据集中所有值均为数值类型,如果不是则尝试将其转换为数值类型;
检查缺失值;
数据集分成训练集和测试集。
上面这4个任务是算法执行前必须要做的常规工作。我们看一下ChatGPT的表现

输出结果

 

import pandas as pd
import numpy as np

def load_csv_data(file_path):
    # Load the csv file into a pandas DataFrame
    df = pd.read_csv(file_path)
    
    # Convert string type data to numeric type and save the mapping in a dictionary
    conversion_map = {}
    for column in df.columns:
        if df[column].dtype == 'O':
            unique_values = df[column].unique()
            conversion_map[column] = {unique_values[i]: i for i in range(len(unique_values))}
            df[column] = df[column].map(conversion_map[column])
    
    # Check for missing values
    missing_value_counts = df.isnull().sum()
    for column, missing_count in missing_value_counts.items():
        if missing_count > 1:
            df.drop(df[df[column].isnull()].index, inplace=True)
        elif missing_count == 1:
            df[column].fillna(df[column].mean(), inplace=True)
    
    # Split the dataset into training and validation sets
    train_df = df.sample(frac=0.8, random_state=0)
    val_df = df.drop(train_df.index)
    
    return train_df, val_df, conversion_map

分析

上面代码可以完美完成目标任务,从csv文件中加载数据集,并以80/20的比例将数据集拆分为测试集和训练集,关键逻辑还加上了注释,ChatGPT甚至贴心的给出了函数使用方法。

ChatGPT生成上面代码总共用时116秒,同时我们的数据工程师编写同样功能的代码用时225秒。二者的代码差异不大,但是我们的数据工程师没写注释。

上面的任务是数据工程师几乎天天都要写的代码,他们很熟练。我又找了一个大学刚毕业还在实习期的数据助理来写,居然半个小时才完成,由于对接口不熟悉,大量时间花在了百度上[捂脸]。

第一轮比试,从各个维度上,都是ChatGPT胜。

 

重构代码

在上一轮的比试中,我发现我们的数据工程师有“偷鸡”行为——由于平时经常需要完成上面工作,他将很多功能封装成了独立的函数,用的时候直接引入或拷贝。使用函数按照逻辑组织代码,不仅能够促进代码复用,还有利于代码维护。所以我们接下来试着让ChatGPT重构一下自己的代码。

任务目标

将上面的代码按照功能合理地拆分成若干函数。

输出结果

 

import pandas as pd
import numpy as np

def load_csv(file_path):
    return pd.read_csv(file_path)

def convert_strings_to_numeric(df):
    conversion_map = {}
    for column in df.columns:
        if df[column].dtype == 'O':
            unique_values = df[column].unique()
            conversion_map[column] = {unique_values[i]: i for i in range(len(unique_values))}
            df[column] = df[column].map(conversion_map[column])
    return df, conversion_map

def handle_missing_values(df):
    missing_value_counts = df.isnull().sum()
    for column, missing_count in missing_value_counts.items():
        if missing_count > 1:
            df.drop(df[df[column].isnull()].index, inplace=True)
        elif missing_count == 1:
            df[column].fillna(df[column].mean(), inplace=True)
    return df

def split_data(df):
    train_df = df.sample(frac=0.8, random_state=0)
    val_df = df.drop(train_df.index)
    return train_df, val_df

def prepare_data(file_path):
    df = load_csv(file_path)
    df, conversion_map = convert_strings_to_numeric(df)
    df = handle_missing_values(df)
    train_df, val_df = split_data(df)
    return train_df, val_df, conversion_map

分析

ChatGPT拆分出5个函数:

load_csv(file_path) 负责从csv文件中加载数据集,返回DataFrame;
convert_strings_to_numeric(df) 负责将DataFrame中的非数值类型数据转换为数值类型,并记录转换映射表;
handle_missing_values(df) 负责处理缺失值;
split_data(df) 负责将数据集拆分为训练集和测试集;
prepare_data(file_path) 将上面4给函数串起来,构成一个pipeline。
不得不说,ChatGPT有一次完美地完成了任务!并且函数名起得非常好,看函数名就能知道函数的功能,比很多中国程序员用拼音或缩写命名函数友好多了。

 

扩展代码

重构后的代码结构已经非常清晰了,但是还是有缺陷,那就是不够灵活,很多规则都是写死的。为了让代码更灵活、可扩展性更强,我们一般会将变量以参数的形式传入。

任务目标

重构上面的代码,以参数的形式从命令行传入以下内容:

csv格式数据集的路径
拆分训练集和验证集的大小
阈值,缺失值大于此阈值则删除记录,小于等于此阈值则处理缺失值

输出结果

 

import pandas as pd
import numpy as np
import argparse

def load_csv(file_path):
    return pd.read_csv(file_path)

def convert_strings_to_numeric(df):
    conversion_map = {}
    for column in df.columns:
        if df[column].dtype == 'O':
            unique_values = df[column].unique()
            conversion_map[column] = {unique_values[i]: i for i in range(len(unique_values))}
            df[column] = df[column].map(conversion_map[column])
    return df, conversion_map

def handle_missing_values(df, threshold):
    missing_value_counts = df.isnull().sum()
    for column, missing_count in missing_value_counts.items():
        if missing_count > threshold:
            df.drop(df[df[column].isnull()].index, inplace=True)
        elif missing_count <= threshold:
            df[column].fillna(df[column].mean(), inplace=True)
    return df

def split_data(df, split_ratio):
    train_df = df.sample(frac=split_ratio, random_state=0)
    val_df = df.drop(train_df.index)
    return train_df, val_df

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description='Prepare data for machine learning.')
    parser.add_argument('file_path', help='Path to the csv file.')
    parser.add_argument('--split-ratio', type=float, default=0.8, help='Ratio of the training set size.')
    parser.add_argument('--threshold', type=int, default=1, help='Threshold for handling missing values.')
    args = parser.parse_args()

    df = load_csv(args.file_path)
    df, conversion_map = convert_strings_to_numeric(df)
    df = handle_missing_values(df, args.threshold)
    train_df, val_df = split_data(df, args.split_ratio)

分析

ChatGPT很好地理解了我们的意图,引入了argparse模块来管理和解析命令行参数,关键是参数名起的也非常合理,参数说明也非常准确(尽管是英文的)。参数都正确地传入了所属的函数,又一次完美的完成了任务。

 

总结

ChatGPT根据我们提供的规范,在创建、重构、扩展一个简单的数据预处理Python脚本方面做得非常出色,每一步的结果都符合要求。虽然这不是一个复杂任务,确实日常工作中最常见的基本工作。ChatGPT的表现确实惊艳了众人,预示着它朝着成为真正有用的编程助手迈出重要的一步。

最终我们从如下几个方面将ChatGPT和我们的数据工程师做了对比:

  ChatGPT 人类程序员
正确性
速度  
编码规范  
文档注释

可见ChatGPT在编码速度和编码习惯上都完胜人类工程师。这让我不得不开始担心程序员未来的饭碗。是的,你没有看错!程序员这个曾经被认为是最不可能被AI取代的职业,如今将面临来自ChatGPT的巨大挑战。根据测试,ChatGPT已经通过Google L3级工程师测试,这意味着大部分基础coding的工作可以由ChatGPT完成。尽管ChatGPT在涉及业务的任务上表现不佳,但未来更可能的工作方式是架构师或设计师于ChatGPT协同完成工作,不再需要编码的码农。


以上就是关于ChatGPT有可能取代码农吗?的介绍啦,需要的朋友可以参考上述内容,希望对大家有帮助,想要了解更多,欢迎关注群英网络,小编将为大家输出更多高质量的实用文章!

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

相关信息推荐
2023-06-06 10:35:35 
摘要:image 什么是maui .NET 多平台应用 UI (.NET MAUI) 是一个跨平台框架,用于使用 C# 和 XAML 创建本机移动(ios,andriod)和桌面(windows,mac)应
2023-06-06 10:36:28 
摘要:昨天接到领导需求,要我搭建一个chatGPT玩玩,并给了一个链接地址:https://gitee.com/RockChin/QChatGPT 然后历经千辛万苦,熬了一宿终于搭建了,中途踩了各种大坑小坑
2023-06-06 09:10:04 
摘要:如何使用新版bing(支持ChatGPT)
云活动
推荐内容
热门关键词
元宇宙+chatgpt+midjourney+意间绘画+AI作图 持续进化+chatgpt+midjourney+意间绘画+AI作图 钉钉+chatgpt+midjourney+意间绘画+AI作图 AI整顿职场+钉钉+chatgpt+midjourney+意间绘画+AI作图 主动开卷+chatgpt+midjourney+意间绘画+AI作图 StableLM+chatgpt+midjourney+意间绘画+AI作图 智能化+SaaS公司+chatgpt+midjourney+意间绘画+AI作图 游戏人+chatgpt+midjourney+意间绘画+AI作图 提示工程+chatgpt+midjourney+意间绘画+AI作图 编写提示指南+chatgpt+midjourney+意间绘画+AI作图 CG大佬+chatgpt+midjourney+意间绘画+AI作图 文心一格+chatgpt+midjourney+意间绘画+AI作图 ChatGPT又崩了+腾讯前副总裁+游戏手柄 原画师+chatgpt+midjourney+意间绘画+AI作图 反对ChatGPT+chatgpt+midjourney+意间绘画+AI作图 文心一言发布会+chatgpt+midjourney+意间绘画+AI作图 下载评测+chatgpt+midjourney+意间绘画+AI作图 文心一言+开放测试+chatgpt+midjourney+意间绘画+AI作图 谎言制造机+chatgpt+midjourney+意间绘画+AI作图 midjourney提示词+chatgpt+midjourney+意间绘画+AI作图 聊天+chatgpt+midjourney+意间绘画+AI作图 视频版Midjourney+chatgpt+midjourney+意间绘画+AI作图 伟大的公司+chatgpt+midjourney+意间绘画+AI作图 下一代操作系统+chatgpt+midjourney+意间绘画+AI作图 阿拉丁时代+chatgpt+midjourney+意间绘画+AI作图 文心一言+chatgpt+midjourney+意间绘画+AI作图 chatgpt+midjourney+意间绘画+AI作图 高薪大神+chatgpt+midjourney+意间绘画+AI作图 爆款游戏+chatgpt+midjourney+意间绘画+AI作图 Firefly+chatgpt+midjourney+意间绘画+AI作图
热门信息
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部