PyCaret处理EEG数据运行PCA报random_state错误如何解决
问题根因
你遇到的报错是PyCaret 2.2.3和scikit-learn 0.24.2的版本兼容性问题:
- PyCaret 2.2.3的聚类模块
setup函数内部,调用sklearn数据拆分相关逻辑时,默认硬编码传入了random_state参数,同时没有设置shuffle=True - 而scikit-learn从0.23版本开始,当
shuffle=False时传入random_state就会抛出你遇到的ValueError,但是PyCaret 2.2.3的setup没有对外暴露shuffle、random_state的入参,所以你自行添加参数会报“不支持的关键字参数”错误。
解决方案
方案1:适配现有环境修复PyCaret逻辑
找到本地PyCaret安装路径下的clustering.py文件,一般路径为Lib/site-packages/pycaret/clustering.py,找到内部调用train_test_split的代码段,要么删除传入的random_state参数,要么在该调用处新增shuffle=True参数即可修复。
修复后可正常运行原有代码:
from pycaret.clustering import * # 加silent=True可跳过交互确认步骤 pca_data = setup(data=raw_df, pca=True, pca_method='linear', pca_components=2, silent=True)
后续可直接调用PyCaret内置的plot_model函数绘制前两个主成分的分布图。
方案2:跳过PyCaret直接用sklearn实现(更轻量,适配当前验证需求)
如果仅需要完成PCA提取、绘图、α波相关性验证,完全不需要引入PyCaret整套框架,几行代码即可实现所有需求:
步骤1:导入依赖
import numpy as np import matplotlib.pyplot as plt from sklearn.decomposition import PCA from sklearn.preprocessing import StandardScaler from scipy.stats import pearsonr
步骤2:生成10Hz参考α波
你的数据采样率为125Hz,共1140个样本,生成对应时序的10Hz正弦波作为参考:
fs = 125 t = np.arange(len(raw_df)) / fs ref_alpha = np.sin(2 * np.pi * 10 * t)
步骤3:执行PCA计算
# PCA要求输入数据先标准化 scaler = StandardScaler() scaled_data = scaler.fit_transform(raw_df) # 提取前2个主成分 pca = PCA(n_components=2) pca_result = pca.fit_transform(scaled_data) pc1 = pca_result[:,0] pc2 = pca_result[:,1] # 输出主成分解释度 print(f"PC1解释方差占比:{pca.explained_variance_ratio_[0]:.2%}") print(f"PC2解释方差占比:{pca.explained_variance_ratio_[1]:.2%}")
步骤4:绘制前两个主成分分布
plt.figure(figsize=(8,6)) plt.scatter(pc1, pc2, s=10, alpha=0.7) plt.xlabel(f"PC1({pca.explained_variance_ratio_[0]:.2%} 方差解释率)") plt.ylabel(f"PC2({pca.explained_variance_ratio_[1]:.2%} 方差解释率)") plt.title("前两个主成分分布") plt.grid(alpha=0.3) plt.show()
步骤5:验证主成分与10Hzα波的相关性
corr_pc1, p_pc1 = pearsonr(pc1, ref_alpha) corr_pc2, p_pc2 = pearsonr(pc2, ref_alpha) print(f"PC1与10Hz正弦波相关系数:{corr_pc1:.3f},p值:{p_pc1:.3f}") print(f"PC2与10Hz正弦波相关系数:{corr_pc2:.3f},p值:{p_pc2:.3f}")
该方案完全绕开了PyCaret的版本兼容问题,代码更可控,完全满足当前的PCA概念验证需求。
内容的提问来源于stack exchange,提问作者the-mad-neuroscientist
相关产品推荐
相关产品推荐

