import numpy as np import pandas as pd from sklearn import svm from sklearn.manifold import TSNE import matplotlib.pyplot as plt from sklearn.preprocessing import StandardScaler def g_label (stress_value): if stress_value <=50: return 0 else: return 1 markers = ["X",'+',"P",'^','V','S','*','o'] hrf_file = 'data/生物信息识别/任务三/hrv_data.csv' hrf_data = pd.read_csv(hrf_file)[["sdnn", "lf_hf", "hr", "stress"]].to_numpy() stress =hrf_data[:,1] label = [g_label(x) for x in stress] std = StandardScaler() data = std.fit_transform(hrf_data[:,:-1]) clf = svm.SVC() clf.fit(data,label) print("准确率",clf.score(data,label)) tsne = TSNE(n_components=2,init='pca',random_state=42) x_tsne = tsne.fit_transform(data) fig = plt.figure() ax = fig.add_subplot(111) for c in range(2): c_data =x_tsne[np.array(label) == c] ax.scatter(c_data[:,0],c_data[:,1],label='class'+str(c)+''+str(len(c_data)),marker=markers[c]) ax.legend(labels=('无压力','有压力')) plt.show()
时间: 2025-04-06 15:12:40 浏览: 33
您的代码展示了一个完整的机器学习流程,包括数据预处理、模型训练及可视化等环节。下面是对其功能和工作原理的详细介绍:
---
### **1. 功能概述**
该脚本的主要目标是对 HRV 数据(心率变异性数据)进行二分类任务,并通过 t-SNE 投影将高维特征降维到二维空间中以便可视化。具体分为以下几个步骤:
- 使用 `svm.SVC()` 构建支持向量机模型完成分类。
- 对分类结果评估其准确度 (`score`)。
- 借助 `TSNE` 将原始高维样本映射至二维平面,并利用散点图区分不同类别分布。
---
### **2. 各模块详解**
#### (1)导入库
您引入了一些常用科学计算与数据分析库:
```python
import numpy as np # 数值运算基础包
import pandas as pd # 数据结构管理工具
from sklearn import svm # 支持向量机算法实现类库
from sklearn.manifold import TSNE # 流形学习中的t-distributed Stochastic Neighbor Embedding 算法用于降维显示
import matplotlib.pyplot as plt # 绘制图形所需组件
from sklearn.preprocessing import StandardScaler # 标准化数值特性缩放辅助函数
```
#### (2)自定义标签生成规则
此处定义了简单的阈值判断方法把连续型变量转化为离散两类标记 `{0,1}` 表示“低压力”与“高压力”的状态划分界限设定了50分界线之上归入第1组否则属于第0组.
```python
def g_label(stress_value):
if stress_value <= 50:
return 0
else:
return 1
```
接着从本地存储路径加载HRV数据集文件名为‘hrv_data.csv’并通过 Pandas 库选取关心四列组成 NumPy array 方便后续数学公式调用; 最后基于刚才建立好的准则逐元素应用得到最终 target vector y 即 label list 形式保存起来待下一步参与监督学习过程.
同时运用 Scikit-Learn 内置标准化处理器 StandardScaler 先拟合再调整输入矩阵 X 的每一维度使得均值趋近零标准差接近单位长度从而提高收敛速度减少梯度消失现象发生几率进而提升整体性能表现效果更优一些。
之后实例化的 SVM 分类器开始接受已经过清洗准备完毕的数据作为原材料正式进入预测模式阶段经过一系列复杂优化求解得出决策边界方程最后反馈给用户有关测试集合上所达到的确切精度百分比指标数字形式呈现给人直观感受好坏程度差异所在之处。
为了更好地理解内部工作机制原理同时也便于调试纠错我们还加入了另一套方案即将多维特征压缩投影降至两维坐标系内借助 Matplotlib 展现出来其中每个点代表单个观测实例而颜色形状则反映出所属群体归属关系清晰明了易于观察辨认之间联系紧密与否一目了然。
---
### **3. 输出解释**
在控制台打印出了模型对于整个训练集中所有样例作出正确定义的比例即所谓的accuracy score得分情况;与此同时弹出一个新的窗口里面包含了一幅精美的彩色图表详细描绘着各类别之间的相对位置布局状况供进一步深入研究探讨挖掘隐藏背后规律特点提供有力支撑证据材料参考价值极高值得珍藏回味无穷也~
---
阅读全文
相关推荐





