通过核函数将数据转换更高维的空间 Parameters: X - 数据矩阵 A - 单个数据的向量 kTup - 包含核函数信息的元组 Returns: K - 计算的核K
(X, A, kTup)
| 38 | self.K[:,i] = kernelTrans(self.X, self.X[i,:], kTup) |
| 39 | |
| 40 | def kernelTrans(X, A, kTup): |
| 41 | """ |
| 42 | 通过核函数将数据转换更高维的空间 |
| 43 | Parameters: |
| 44 | X - 数据矩阵 |
| 45 | A - 单个数据的向量 |
| 46 | kTup - 包含核函数信息的元组 |
| 47 | Returns: |
| 48 | K - 计算的核K |
| 49 | """ |
| 50 | m,n = np.shape(X) |
| 51 | K = np.mat(np.zeros((m,1))) |
| 52 | if kTup[0] == 'lin': K = X * A.T #线性核函数,只进行内积。 |
| 53 | elif kTup[0] == 'rbf': #高斯核函数,根据高斯核函数公式进行计算 |
| 54 | for j in range(m): |
| 55 | deltaRow = X[j,:] - A |
| 56 | K[j] = deltaRow*deltaRow.T |
| 57 | K = np.exp(K/(-1*kTup[1]**2)) #计算高斯核K |
| 58 | else: raise NameError('核函数无法识别') |
| 59 | return K #返回计算的核K |
| 60 | |
| 61 | def loadDataSet(fileName): |
| 62 | """ |