import pandas as pd
import numpy as np
print("=" * 50)
print("🌿 Iris数据集数据挖掘实验")
print("=" * 50)
# 生成模拟的Iris数据集
np.random.seed(42)
n_samples = 30 # 小样本量适应Ideone限制
# 为三种鸢尾花生成数据
setosa_data = {
'sepal_length': np.random.normal(5.0, 0.4, n_samples),
'sepal_width': np.random.normal(3.4, 0.3, n_samples),
'petal_length': np.random.normal(1.5, 0.2, n_samples),
'petal_width': np.random.normal(0.2, 0.1, n_samples),
'species': ['setosa'] * n_samples
}
versicolor_data = {
'sepal_length': np.random.normal(6.0, 0.5, n_samples),
'sepal_width': np.random.normal(2.8, 0.3, n_samples),
'petal_length': np.random.normal(4.5, 0.4, n_samples),
'petal_width': np.random.normal(1.3, 0.2, n_samples),
'species': ['versicolor'] * n_samples
}
virginica_data = {
'sepal_length': np.random.normal(6.7, 0.5, n_samples),
'sepal_width': np.random.normal(3.0, 0.3, n_samples),
'petal_length': np.random.normal(5.5, 0.4, n_samples),
'petal_width': np.random.normal(2.0, 0.3, n_samples),
'species': ['virginica'] * n_samples
}
# 创建DataFrame
setosa_df = pd.DataFrame(setosa_data)
versicolor_df = pd.DataFrame(versicolor_data)
virginica_df = pd.DataFrame(virginica_data)
# 合并数据
data = pd.concat([setosa_df, versicolor_df, virginica_df], ignore_index=True)
print("✅ 模拟Iris数据集生成完成")
print(f"数据集形状: {data.shape}")
print(f"样本数量: {len(data)}")
print(f"特征数量: {len(data.columns)-1}") # 减去species列
aW1wb3J0IHBhbmRhcyBhcyBwZAppbXBvcnQgbnVtcHkgYXMgbnAKCnByaW50KCI9IiAqIDUwKQpwcmludCgi8J+MvyBJcmlz5pWw5o2u6ZuG5pWw5o2u5oyW5o6Y5a6e6aqMIikKcHJpbnQoIj0iICogNTApCgojIOeUn+aIkOaooeaLn+eahElyaXPmlbDmja7pm4YKbnAucmFuZG9tLnNlZWQoNDIpCm5fc2FtcGxlcyA9IDMwICAjIOWwj+agt+acrOmHj+mAguW6lElkZW9uZemZkOWItgoKIyDkuLrkuInnp43puKLlsL7oirHnlJ/miJDmlbDmja4Kc2V0b3NhX2RhdGEgPSB7CiAgICAnc2VwYWxfbGVuZ3RoJzogbnAucmFuZG9tLm5vcm1hbCg1LjAsIDAuNCwgbl9zYW1wbGVzKSwKICAgICdzZXBhbF93aWR0aCc6IG5wLnJhbmRvbS5ub3JtYWwoMy40LCAwLjMsIG5fc2FtcGxlcyksCiAgICAncGV0YWxfbGVuZ3RoJzogbnAucmFuZG9tLm5vcm1hbCgxLjUsIDAuMiwgbl9zYW1wbGVzKSwKICAgICdwZXRhbF93aWR0aCc6IG5wLnJhbmRvbS5ub3JtYWwoMC4yLCAwLjEsIG5fc2FtcGxlcyksCiAgICAnc3BlY2llcyc6IFsnc2V0b3NhJ10gKiBuX3NhbXBsZXMKfQoKdmVyc2ljb2xvcl9kYXRhID0gewogICAgJ3NlcGFsX2xlbmd0aCc6IG5wLnJhbmRvbS5ub3JtYWwoNi4wLCAwLjUsIG5fc2FtcGxlcyksCiAgICAnc2VwYWxfd2lkdGgnOiBucC5yYW5kb20ubm9ybWFsKDIuOCwgMC4zLCBuX3NhbXBsZXMpLAogICAgJ3BldGFsX2xlbmd0aCc6IG5wLnJhbmRvbS5ub3JtYWwoNC41LCAwLjQsIG5fc2FtcGxlcyksCiAgICAncGV0YWxfd2lkdGgnOiBucC5yYW5kb20ubm9ybWFsKDEuMywgMC4yLCBuX3NhbXBsZXMpLAogICAgJ3NwZWNpZXMnOiBbJ3ZlcnNpY29sb3InXSAqIG5fc2FtcGxlcwp9Cgp2aXJnaW5pY2FfZGF0YSA9IHsKICAgICdzZXBhbF9sZW5ndGgnOiBucC5yYW5kb20ubm9ybWFsKDYuNywgMC41LCBuX3NhbXBsZXMpLAogICAgJ3NlcGFsX3dpZHRoJzogbnAucmFuZG9tLm5vcm1hbCgzLjAsIDAuMywgbl9zYW1wbGVzKSwKICAgICdwZXRhbF9sZW5ndGgnOiBucC5yYW5kb20ubm9ybWFsKDUuNSwgMC40LCBuX3NhbXBsZXMpLAogICAgJ3BldGFsX3dpZHRoJzogbnAucmFuZG9tLm5vcm1hbCgyLjAsIDAuMywgbl9zYW1wbGVzKSwKICAgICdzcGVjaWVzJzogWyd2aXJnaW5pY2EnXSAqIG5fc2FtcGxlcwp9CgojIOWIm+W7ukRhdGFGcmFtZQpzZXRvc2FfZGYgPSBwZC5EYXRhRnJhbWUoc2V0b3NhX2RhdGEpCnZlcnNpY29sb3JfZGYgPSBwZC5EYXRhRnJhbWUodmVyc2ljb2xvcl9kYXRhKQp2aXJnaW5pY2FfZGYgPSBwZC5EYXRhRnJhbWUodmlyZ2luaWNhX2RhdGEpCgojIOWQiOW5tuaVsOaNrgpkYXRhID0gcGQuY29uY2F0KFtzZXRvc2FfZGYsIHZlcnNpY29sb3JfZGYsIHZpcmdpbmljYV9kZl0sIGlnbm9yZV9pbmRleD1UcnVlKQoKcHJpbnQoIuKchSDmqKHmi59Jcmlz5pWw5o2u6ZuG55Sf5oiQ5a6M5oiQIikKcHJpbnQoZiLmlbDmja7pm4blvaLnirY6IHtkYXRhLnNoYXBlfSIpCnByaW50KGYi5qC35pys5pWw6YePOiB7bGVuKGRhdGEpfSIpCnByaW50KGYi54m55b6B5pWw6YePOiB7bGVuKGRhdGEuY29sdW1ucyktMX0iKSAgIyDlh4/ljrtzcGVjaWVz5YiX