原文:
towardsdatascience.com/how-to-use-generative-ai-and-python-to-create-designer-dummy-datasets-d3cd9755c091
你是否曾经需要过不易找到的数据集?想要轻松生成符合你面试潜在数据科学候选人、软件测试和开发或训练模型要求的精确数据?或者只是想要使用正确的数据来展示 Medium 文章中的技能和技术(不违反版权法)?
输入虚拟数据!📊 ✨
https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/ade9d6cb69375a4ebe65218d67541bcb.png
Image created by me, using DALL-E
直到最近,创建虚拟数据集还相当繁琐和费力,我们中的技术专家可以用精心编写的 Python 代码来生成它,但手动编写所有要求可能需要花费大量时间,并且有很高的技术门槛。
假设我们有一个用例,我们想要测试申请数据科学职位的候选人,我们希望他们能够识别和讨论现实世界的模式,但由于隐私原因,我们无法在外部共享实际的客户交易数据。
解决方案?利用生成式 AI 的力量,熟练地编写复杂的 Python 代码,输出我们的✨设计师虚拟数据集✨
让我们看看如何提示 GPT4 为我们生成一个满足所有精确且有些繁琐的要求的数据集:
Hi there! You are my expert python programmeranddata scientist extraordinaire.I need to generate a"designer dummy dataset"that meets the following conditionsandspecifications,can you please write the python codeforme to generate it? The datasetistransactionsin2019,2020,and2021I want the dataset to contain the following columns:id,transaction_timestamp,user_id,amount,merchant,network,card_type.The merchant_name should be either:Walmart,Netflix.com,Starbucks,Home Depot,7/11,Dunkin Donuts,Trader Joe's,andAmazon.com The user_id should be between1and100-the amount should be9.99forevery Netflix.com purchase,less than $10forStarbucksandDunkin Donuts,between $25and500forWalmart,Amazon.com,andHome Depot,less than $25for7/11,andbetween $10and$250forTrader Joe's There should be1000transactionsin2019,andthen it should increase by100%in2020,and150%in2021\.Card_network should be visaormastercard,andcard_type should be creditordebit看上面,我们正在利用提示工程的艺术,让 ChatGPT 写出我们想要的精确内容。
首先,确保你在电脑上安装了所有 Python 库。尽管这个教程不需要广泛的 Python 知识,但你将需要在 Jupyter Notebook 中运行 ChatGPT 的 Python 代码以获取输出,因此需要相应的包。
pip install pandas pip install numpy现在我们已经准备好运行和测试 Chat GPT 为我们生成的创建虚拟数据集的代码。
importpandasaspdimportnumpyasnpimportrandomfromdatetimeimportdatetime,timedelta# Set random seed for reproducibilityrandom.seed(42)np.random.seed(42)# Define the function to generate the datasetdefgenerate_transactions(start_year=2019,end_year=2021,initial_transactions=1000):years=range(start_year,end_year+1)growth_rate=[100,150]# Percentage increase for 2020 and 2021 respectivelymerchant_names=['walmart','netflix.com','starbucks','home depot','7/11','dunkin donuts','trader joe's', 'amazon.com']card_networks=['visa','mastercard']card_types=['credit','debit']transactions=[]foryearinyears:num_transactions=initial_transactionsifyear>start_year:increase=growth_rate.pop(0)/100num_transactions=int(num_transactions*(1+increase))for_inrange(num_transactions):user_id=np.random.randint(1,101)merchant=random.choice(merchant_names)network=random.choice(card_networks)card_type=random.choice(card_types)date=datetime(year,np.random.randint(1,13),np.random.randint(1,29))timestamp=date.strftime('%Y-%m-%d %H:%M:%S')ifmerchant=='netflix.com':amount=9.99elifmerchantin['starbucks','dunkin donuts']:amount=round(random.uniform(1,10),2)elifmerchantin['walmart','amazon.com','home depot']:amount=round(random.uniform(25,500),2)elifmerchant=='7/11':amount=round(random.uniform(1,25),2)else:# trader joe'samount=round(random.uniform(10,250),2)transactions.append([timestamp,user_id,amount,merchant,network,card_type])initial_transactions=num_transactions df=pd.DataFrame(transactions,columns=['transaction_timestamp','user_id','amount','merchant','network','card_type'])df.insert(0,'id',range(1,1+len(df)))returndf# Generate the datasetdf_transactions=generate_transactions()# Show the first few rows of the dataset to verifydf_transactions.head()https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/26d1f9b8962827b7a1ec577a59ae7e53.png
上述代码生成的用于创建我们的虚拟数据集的输出。
现在,让我们再次确认这个虚拟数据集实际上符合我们指定的要求;如果我们要求潜在的数据科学候选人进行分析并找出趋势,我们希望这些趋势确实存在。因此,让我们请求 ChatGPT 提供 Python 代码来检查我们对于百分比增长的指定要求(表示公司增长):
# Calculate total transaction counts for each year and the percentage changetransaction_counts=df_transactions['transaction_timestamp'].apply(lambdax:datetime.strptime(x,'%Y-%m-%d %H:%M:%S').year).value_counts().sort_index()# Calculate percentage changepercentage_change=transaction_counts.pct_change().fillna(0)*100# Combine into a single DataFramesummary=pd.DataFrame({'Total Transactions':transaction_counts,'Percentage Change (%)':percentage_change}).reset_index()summaryhttps://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/9c82a4d9451a1db75788cf22e614f4fb.png
我们 GenAI 生成的“测试”输出,针对我们 GenAI 生成的虚拟数据。完美!
下面,你可以看到我们可能从分析我们的虚拟数据集、寻找我们明确隐藏在内的确切趋势和发现的数据分析师或数据科学申请者那里得到的结果。
(注意,我们没有在“设计师虚拟数据集”中包含数据质量问题,但如果你想要创建一个需要纠正数据类型、处理空值或捕获异常的需求,你绝对可以将这一点添加到你的提示中!)
https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/05d01e28b8e1070658efc244a1b3d8c9.png
我们可能希望我们的数据科学候选人从我们的“虚拟数据”中阐明的那种发现和数据可视化示例。
https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/e7ef383a171cbdc9ad6a396488ea2037.png
潜在候选人的发现 – 某些商家的平均交易金额要高得多!这种发现你可以在例如 Chime 的数据中找到。
除了面试候选人之外,这种方法在许多应用场景中都非常有用!作为一名潜在的数据科学候选人,我发现提前为我要申请的公司生成虚拟数据集,以便在技术筛选之前了解如何处理该行业的数据,这对我是非常有帮助的。
在数据组织中,设计师虚拟数据集可以在各种场景中使用!作为 Chime 的前数据工程师,我首先想到的是:
创建虚拟数据来测试数据匿名化工具(你不想在开发过程中暴露真实的客户 PII!)
测试数据管道 – 我们希望检查数据管道的可靠性、效率和准确性,并轻松模拟场景。创建特定的数据集可以让你轻松完成这项工作!
通过生成具有特定错误的数据来验证数据质量保证流程,以检查你的流程是否能够正确捕获并发出警报。
对于 Medium 上的数据科学作家来说,这种技术对于生成真实、无版权和隐私问题的数据集非常有价值,这些数据集可以让你展示你的数据可视化技能!
https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/cd5d36cc0970f8a673f1941869d874f3.png
由我创建的图像,使用 DALL-E。提示:数据管道的抽象未来表现。
局限性 + 考虑事项
尽管生成式 AI 在生成这些虚拟数据集方面可能非常强大和有用,但重要的是要认识到它们的应用存在局限性,尤其是在像我们这样从人类输入中创建时。您的提示永远不会完全捕捉到真实消费者数据集的准确性、真实性和往往的“杂乱无章”,因此这种方法不能替代机器学习模型的实际训练数据,无论您的提示多么复杂。
偏见。由于我们作为人类在编写这些提示,因此生成的任何数据集都可能包含我们作为编写者所持有的固有偏见。在生成“虚拟数据集”时,考虑到您的数据不会歧视人或者地方,这一点非常重要。在生成您的数据集时,请始终记住这一点!
正如您在这简短的教程中所看到的,GPT4 是一个创建符合严格和复杂要求的自定义数据集的强大工具,通过利用其高级编码能力和您自己的提示工程技能,您可以创建用于各种目的的极其详细和复杂的数据。这仅仅是开始!
感谢您的阅读,如果您对数据+AI 感兴趣,请查看我的其他文章!👇
SQL 精通:数据专业人士的高级技术