python机器学习 t检验和f检验
时间: 2025-01-07 09:17:29 浏览: 7
### Python 中用于机器学习的 T 检验和 F 检验
#### 使用 Scikit-Learn 进行 T 检验
对于单样本 T 检验,在给定一组观测值的情况下,可以测试这些观测值是否来自具有特定均值的总体。这通常通过 `scipy.stats` 库来完成。
```python
from scipy import stats
import numpy as np
np.random.seed(0)
data = np.random.normal(loc=5, scale=2, size=100)
# 假设我们想知道该数据集是否来自于平均值为5的人群
t_statistic, p_value = stats.ttest_1samp(data, popmean=5)
print(f"T 统计量: {t_statistic}, P 值: {p_value}")
```
上述代码创建了一个服从正态分布的数据集,并进行了单样本 T 测试以验证其均值是否等于指定值[^4]。
#### 使用 Scikit-Learn 进行独立双样本 T 检验
如果要比较两个不同组之间的差异,则可采用独立双样本 T 检验:
```python
group_a = np.random.normal(loc=7, scale=3, size=80)
group_b = np.random.normal(loc=6, scale=3, size=80)
t_statistic, p_value = stats.ttest_ind(group_a, group_b)
print(f"两样本T统计量: {t_statistic}, P值: {p_value}")
```
这段脚本模拟了两个不同的群体并执行了两次采样间的对比分析。
#### 利用 Scikit-Learn 执行 ANOVA (F 检验)
ANOVA 或者说 F 检验用来评估多个类别间是否存在显著性差别。Scikit-learn 提供了方便的方法来进行此类操作:
```python
from sklearn.datasets import load_iris
from sklearn.feature_selection import f_classif
iris = load_iris()
X, y = iris.data[:, :2], iris.target # 只取前两个特征作为例子
f_statistics, p_values = f_classif(X, y)
for i in range(len(f_statistics)):
print(f'Feature {i}: F={f_statistics[i]}, P-value={p_values[i]}')
```
此段程序加载鸢尾花数据集的一部分,并对其应用 F 检验以判断各个属性的重要性[^3]。
阅读全文