import matplotlib.pyplot as plt
# 生成正态分布数据
mu, sigma = 0, 1 # 平均值和标准差
data_normal = np.random.normal(mu, sigma, 1000)
# 可视化
plt.hist(data_normal, bins=30, alpha=0.7, color=’blue’, edgecolor=’black’)
plt.title(‘正态分布’)
plt.xlabel(‘值’)
plt.ylabel(‘频率’)
plt.show()
import matplotlib.pyplot as plt
# 真实分布的参数(等待时间)
real_mu = 10 # 平均值
real_sigma = 2 # 标准差
n_real_samples = 10000 # 真实数据数量(样本)
# 真实数据生成(观测分布)
real_data = np.random.normal(real_mu, real_sigma, n_real_samples)
# 蒙特卡洛:用于近似真实分布的渐进样本
n_monte_carlo_samples = 500 # 蒙特卡洛样本的最大数量
monte_carlo_data = np.random.normal(real_mu, real_sigma, n_monte_carlo_samples)
# 创建图表来比较真实分布和蒙特卡洛模拟
plt.figure(figsize=(12, 6))
# 真实分布
plt.hist(real_data, bins=30, alpha=0.5, color=’blue’, label=’真实分布’, density=True)
# 蒙特卡洛分布
plt.hist(monte_carlo_data, bins=30, alpha=0.5, color=’orange’, label=’蒙特卡洛’, density=True)
plt.title(“真实分布与蒙特卡洛模拟的比较”)
plt.xlabel(“等待时间(分钟)”)
plt.ylabel(“密度”)
plt.legend()
plt.grid(True)
plt.show()
covariance = [[1, 0.8], [0.8, 1]] # 协方差矩阵
data_multivariate = np.random.multivariate_normal(mean, covariance, 500)
# 可视化
plt.scatter(data_multivariate[:, 0], data_multivariate[:, 1], alpha=0.6)
plt.title(‘多元正态分布’)
plt.xlabel(‘X’)
plt.ylabel(‘Y’)
plt.axis(‘equal’)
plt.show()
np.random.seed(42)
n_samples = 1000
slope = 2.5 # 线性关系的斜率
intercept = 50 # 截距
noise_level = 5 # 噪声水平
# 数据生成
heights = np.random.normal(170, 10, n_samples) # 正态分布的身高
weights = slope * heights + intercept + np.random.normal(0, noise_level, n_samples)
# 可视化
plt.scatter(heights, weights, alpha=0.6)
plt.title(‘综合线性关系 (身高 vs 体重)’)
plt.xlabel(‘身高 (cm)’)
plt.ylabel(‘体重 (kg)’)
plt.show()
import matplotlib.pyplot as plt
from sklearn.mixture import GaussianMixture
# 原始数据:两个主要聚类
np.random.seed(42)
data_original = np.concatenate([
np.random.normal(loc=0, scale=1, size=(100, 2)),
np.random.normal(loc=5, scale=1.5, size=(100, 2))
])
# 创建 GMM 模型
gmm = GaussianMixture(n_components=2, random_state=42)
gmm.fit(data_original)
# 生成新的合成数据
data_sintetici = gmm.sample(200)[0]
# 并排可视化
fig, axes = plt.subplots(1, 2, figsize=(12, 6), sharex=True, sharey=True)
# 原始数据图
axes[0].scatter(data_original[:, 0], data_original[:, 1], alpha=0.6, label=”Original Data”)
axes[0].legend()
axes[0].set_title(“Original Data”)
axes[0].grid(True)
# 合成数据图
axes[1].scatter(data_sintetici[:, 0], data_sintetici[:, 1], color=’r’, alpha=0.6, label=”Dati Sintetici”)
axes[1].legend()
axes[1].set_title(“Synthetic Data Generated with GMM”)
axes[1].grid(True)
plt.tight_layout()
plt.show()
import matplotlib.pyplot as plt
from sklearn.mixture import GaussianMixture
from sklearn.tree import DecisionTreeClassifier
import pandas as pd
# 创建一个简单的数据集
np.random.seed(42)
data_original = pd.DataFrame({
‘Feature1’: np.random.choice([0, 1], size=100),
‘Feature2’: np.random.choice([0, 1], size=100),
‘Label’: np.random.choice([0, 1], size=100)
})
# 构建决策树
X = data_original[[‘Feature1’, ‘Feature2’]]
y = data_original[‘Label’]
tree = DecisionTreeClassifier(max_depth=3, random_state=42)
tree.fit(X, y)
# 生成新数据
syntetic_data = pd.DataFrame({
‘Feature1’: np.random.choice([0, 1], size=100),
‘Feature2’: np.random.choice([0, 1], size=100)
})
synthesized_data[‘Label’] = tree.predict(synthetic_data)
print(“生成的合成数据:n”, synthesized_data.head())
Job”(表示人员职业的字符串)、“
Age”(18 到 75 之间的整数)、“
Country”(表示国家名称的字符串)
和“Score”(0 到 100 之间的浮点数)。nn“
“Job | Age | Country | Scoren”
“———————————n”
“Teacher | 30 | USA | 88.5n”
“Engineer | 45 | UK | 92.3n”
“Nurse | 28 | Canada | 75.4n”
“Artist | 33 | France | 68.9n”
“Doctor | 50 | Germany | 85.1n”
import torch
import re
# 加载 tokenizer 和 hugging face 模型
model_name = “EleutherAI/gpt-neo-1.3B”
tokenizer = GPT2Tokenizer.from_pretrained(model_name)
tokenizer.pad_token = tokenizer.eos_token

model.config.pad_token_id = tokenizer.eos_token_id
device = torch.device(“cuda” if torch.cuda.is_available() else “cpu”)
model.to(device)
model.eval()
prompt = (
“生成一个包含 10 行 4 列的数据集:n”
“Job(表示人员职业的字符串)、”
“Age(18 到 75 之间的整数)、”
“Country(表示国家名称的字符串)、”
“and Score(浮点数)介于 0 和 100 之间)。nn”
“工作 | 年龄 | 国家 | 年收入n”
“———————————n”
“教师 | 30 | 美国 | 88.5n”
“工程师 | 45 | 英国 | 92.3n”
“护士 | 28 | 加拿大 | 75.4n”
“艺术家 | 33 | 法国 | 68.9n”
“医生 | 50 | 德国 | 85.1n”
)
# 对提示进行编码
inputs = tokenizer(prompt, return_tensors=”pt”, padding=True).to(device)
input_ids = inputs[‘input_ids’]
attention_mask = inputs[‘attention_mask’]
# 生成文本
output = model.generate(
input_ids=input_ids,
attention_mask=attention_mask,
max_length=input_ids.shape[1] + 200,
num_return_sequences=1,
no_repeat_ngram_size=2,
do_sample=False,
temperature=0.7,
pad_token_id=tokenizer.eos_token_id
)
# 解码输出
generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
print(generated_text)
# 提取阅读模式
data_pattern = re.compile(
r”([A-Za-zs]+)s*|s*(d{1,2})s*|s*([A-Za-zs]+)s*|s*(d{1,3}.d+)”
)
matches = data_pattern.findall(generated_text)
print(“nExtracted Data:”)
for match in matches:
print(f”Job: {match[0].strip()}, Age: {match[1]}, 国家: {match[2].strip()}, 收入: {match[3]}”)
工作:教师,年龄:30,国家:美国,收入:88.5
工作:工程师,年龄:45,国家:英国,收入:92.3
工作:护士,年龄:28,国家:加拿大,收入:75.4
工作:艺术家,年龄:33,国家:法国,收入:68.9
工作:医生,年龄:50,国家:德国,收入:85.1
工作:经理,年龄:25,国家:西班牙,收入:77.8
工作:销售员,年龄:35,国家:日本,收入:73.6
工作:司机,年龄:20,国家:澳大利亚,收入:71.2
工作:办事员,年龄:40,国家:印度,收入:70.7
工作:学生,年龄:24,国家:中国,收入:69.0
工作:面包师,年龄:22,国家:巴西,收入:66.75
工作:女佣,年龄: 23,国家:意大利,收入:65.25
职业:厨师,年龄:21,国家:希腊,收入:64.15
职业:家庭主妇,年龄:26,国家:土耳其,收入:63.85
职业:渔夫,年龄:29,国家:俄罗斯,收入:62.65
职业:搬运工,年龄:27,国家:南非,收入:61.45
职业:水手,年龄:32,国家:美国,收入:60.35
职业:士兵,年龄:31,国家:瑞典,收入:59.05
职业:警察,年龄:34,国家:荷兰,收入:58.95
职业:护理人员,年龄:36,国家:比利时,收入:57.55
职业:建筑工人,年龄:37,国家:丹麦,收入:56.40
职业:电工,年龄:38,国家:挪威,收入: 55.10
import pandas as pd
# 观察值和类别的数量
n_observations = 100
n_categories = 3
# 每个观察值的总和
total_sum = 100
# 生成随机数据
data = np.random.dirichlet(np.ones(n_categories), size=n_observations) * total_sum
# 创建 DataFrame
df = pd.DataFrame(data, columns=[f”Category_{i+1}” for i in range(n_categories)])
df[“Total”] = df.sum(axis=1)
print(“使用固定和生成的数据集示例:”)
print(df.head())
>>>
使用固定和生成的数据集示例:
Category_1 Category_2 Category_3 Total
0 58.673361 34.972747 6.353891 100.0
1 16.882673 14.145658 68.971669 100.0
2 71.446625 10.170256 18.383118 100.0
3 57.066341 37.334702 5.598957 100.0
4 15.686990 3.622839 80.690171 100.0
# 数据集的维度
n_samples = 1000
# 所需的相关矩阵
correlation_matrix = np.array([[1.0, 0.8, 0.5], [0.8, 1.0, 0.3],[0.5, 0.3, 1.0]])
# 创建相关数据
mean = [0, 0, 0]
data = np.random.multivariate_normal(mean, correlation_matrix, size=n_samples)
# 转换为 DataFrame
df_corr = pd.DataFrame(data, columns=[“Variable_1”, “Variable_2”, “Variable_3”])
print(df_corr.corr())
>>>
Variable_1 Variable_2 Variable_3
Variable_1 1.000000 0.784861 0.490152
Variable_2 0.784861 1.000000 0.263210
变量_3 0.490152 0.263210 1.000000
导入 pandas 作为 pd
导入 matplotlib.pyplot 作为 plt
# 创建因果图
n_nodes = 10
p_connection = 0.3
graph = nx.erdos_renyi_graph(n_nodes, p_connection)
# 转换为 DataFrame
edges = nx.to_pandas_edgelist(graph)
print(“连接列表(弧):”)
print(edges)
# 图形可视化
plt.figure(figsize=(8, 6))
nx.draw(graph, with_labels=True, node_color=’lightblue’, edge_color=’gray’, node_size=700, font_size=10)
plt.title(“因果图的表示”)
plt.show()
导入 networkx 作为 nx
导入 pandas 作为 pd
导入 matplotlib.pyplot 作为 plt
从 statsmodels.tsa.arima_process 导入 ArmaProcess
# 定义 AR 和 MA 参数
ar_params = np.array([1, -0.5])
ma_params = np.array([1, 0.4])
model = ArmaProcess(ar=ar_params, ma=ma_params)
# 生成时间序列
n_points = 200
time_series = model.generate_sample(nsample=n_points)
# 可视化
导入 matplotlib.pyplot 作为 plt
plt.plot(time_series)
plt.title(“自回归时间序列”)
plt.show()