如何用Python创建分类模拟数据
在本教程中,我们将学习如何在Python中从分类中创建模拟数据。
介绍
模拟数据可以被定义为不代表真实现象的任何数据,但是利用参数和限制生成的合成数据。
何时以及为什么我们需要模拟数据?
有时,在机器学习或深度学习中为某种算法制作原型时,我们通常会面临关键真实世界数据的匮乏,这些数据对我们来说非常有用。有时,对于给定的任务,不存在此类数据。在这种情况下,我们可能需要产生合成数据。这些数据也可以来自实验室模拟。
模拟数据的优势
-
大多数情况下代表数据可能以真实形式存在
-
包含噪声变化较小,因此可视为理想数据集
-
用于快速原型设计和POC
使用Python生成分类模拟数据
在此演示中,我们将使用科学计算库Sci-kit Learn来生成模拟数据。
示例
from faker import Faker
# Create a Faker object
faker = Faker()
# Generate a fake name
name = faker.name()
print(name)
# Generate a fake address
address = faker.address()
print(address)
# Generate a fake phone number
phone_number = faker.phone_number()
print(phone_number)
输出
Reid Johnson
3510 Laura Plaza Suite 573
Adamborough, NJ 79016
+1-987-654-3210
The Faker library can be used to generate fake data which can be useful in testing or creating examples.
!pip install Faker
from random import randint
import pandas as pd
from faker import Faker
from faker.providers import DynamicProvider
medical_professions_provider = DynamicProvider(
provider_name="medical_profession",
elements=["dr.", "doctor", "nurse", "surgeon", "clerk"],
)
fake = Faker()
fake.add_provider(medical_professions_provider)
def input_data(x):
# pandas dataframe
data = pd.DataFrame()
for i in range(0, x):
data.loc[i,'id']= randint(1, 100)
data.loc[i,'name']= fake.name()
data.loc[i,'address']= fake.address()
data.loc[i,'latitude']= str(fake.latitude())
data.loc[i,'longitude']= str(fake.longitude())
data.loc[i,'target'] = str(fake.medical_profession())
return data
print(input_data(10))
输出
id name address \
7.0 Monique Rodriguez 481 Rebecca Landing Suite 727\nDominiquefurt, ...
4.0 Elizabeth Johnson 62492 Zimmerman Crest Apt. 047\nPort Jerome, W...
18.0 Max Rangel 4379 Obrien Curve\nDavistown, IA 02341
31.0 Tammie Kent 4866 Angela Turnpike Apt. 658\nNorth Sheilabor...
42.0 James Johnston 26827 Jeremiah Alley\nFreystad, SC 86902
21.0 Shawn Robles 137 Jessica Ridges Apt. 436\nWilliamburgh, AZ ...
13.0 Stephen Hodges Unit 9799 Box 0625\nDPO AA 94415
91.0 Eric Lewis PhD 4711 Nicholas Loaf\nWest Lisa, UT 28944
68.0 Matthew Munoz 37836 White Crest\nGonzalezport, NC 75320
34.0 Lawrence Anderson 76712 GarzaMills Apt. 751\nPort Penny, CT 43042
latitude longitude target 0 60.574796 109.367770 clerk
1 84.7225155 -167.216393 dr.
2 82.598649 62.961322 surgeon
3 26.9617205 89.333171 doctor
4 -37.1740195 -140.766121 dr.
5 -40.8904645 28.820918 clerk
6 88.809220 76.442779 dr.
7 35.728143 178.729120 doctor
8 -16.5669945 126.686740 dr.
9 -49.271970 160.737754 clerk
结论
用于模拟的数据在日常的机器学习应用中非常有用,可用于原型设计或小型 Proof of Concept。在 Python 中有一些方便的工具,可以在几行代码内轻松创建模拟数据。
极客教程