fuzzy_train_data, _ = cmeans_predict(train_data.iloc[:, :-1], cntr.iloc[:, :], 2, error=0.005, maxiter=1000)列名怎么设置成一样的
时间: 2023-06-12 11:07:18 浏览: 38
如果您要将列名设置成一样的,可以使用以下代码:
```
train_data.columns = ['col1', 'col2', 'col3', ..., 'coln']
cntr.columns = ['col1', 'col2', 'col3', ..., 'coln']
```
将 `train_data` 和 `cntr` 的列名设置为相同的名称即可。请将列数 n 替换为您实际的列数。
相关问题
fuzzy_train_data, _ = cmeans_predict(train_data.iloc[:, :-1].values.T, cntr, 2, error=0.005, maxiter=1000)另一种写法
另一种写法可以使用 numpy 库中的 `fuzzy.cmeans_predict()` 方法,代码如下:
```python
import numpy as np
from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
from scipy.spatial import distance
from scipy.cluster.vq import vq, kmeans, whiten
from scipy.cluster.vq import vq, kmeans2
from scipy.cluster.vq import whiten
from scipy.cluster.vq import kmeans, kmeans2, whiten
from scipy.cluster.vq import vq, kmeans, whiten
from scipy.cluster.vq import kmeans, whiten, vq
from scipy.cluster.vq import whiten, kmeans, vq
from scipy.cluster.vq import vq, whiten, kmeans2
from scipy.cluster.vq import whiten, vq, kmeans2
from scipy.cluster.vq import kmeans2, whiten, vq
from scipy.cluster.vq import kmeans2, vq, whiten
from scipy.cluster.vq import vq, kmeans, whiten, kmeans2
# 生成随机数据
np.random.seed(0)
train_data, _ = make_blobs(n_samples=150, centers=3, n_features=2, random_state=0)
# KMeans 聚类
kmeans = KMeans(n_clusters=3, random_state=0).fit(train_data)
# 计算每个数据点的隶属度
cntr, u, u0, d, jm, p, fpc = fuzz.cluster.cmeans(
train_data.T, 3, 2, error=0.005, maxiter=1000, init=None)
# 另一种写法
fuzzy_train_data, _ = fuzzy.cmeans_predict(train_data.T, cntr, 2, error=0.005, maxiter=1000)
```
y_pred = np.zeros((y_train.shape[0], 3)) for tree in forest: a = [] for j in range(X_train.shape[1]): if np.median(X_train[:, j]) > np.mean(X_train[:, j]): fuzzy_vals = fuzz.trapmf(X_train[:, j], [np.min(X_train[:, j]), np.mean(X_train[:, j]), np.median(X_train[:, j]), np.max(X_train[:, j])]) else: fuzzy_vals = fuzz.trapmf(X_train[:, j], [np.min(X_train[:, j]), np.median(X_train[:, j]), np.mean(X_train[:, j]), np.max(X_train[:, j])]) a.append(fuzzy_vals) fuzzy_vals = np.array(a).T y_pred += tree.predict_proba(fuzzy_vals) y_pred /= n_trees改成三分类预测代码
如果你的随机森林模型是二分类的,你需要做以下更改来进行三分类预测:
1. 修改 `y_pred` 的形状为 `(y_train.shape[0], 3)`,即有三个类别。
2. 对于每个决策树,预测的输出应该是每个类别的概率,而不是二分类的概率。所以你需要将 `tree.predict_proba(fuzzy_vals)` 改为 `tree.predict_proba(fuzzy_vals.reshape(-1, fuzzy_vals.shape[1], 1)).reshape(-1, 3)`。
3. 对于每个样本的预测值,你需要将它除以 `n_trees`,而不是 `n_trees` 乘以它。
以下是修改后的代码:
```
y_pred = np.zeros((y_train.shape[0], 3))
for tree in forest:
a = []
for j in range(X_train.shape[1]):
if np.median(X_train[:, j]) > np.mean(X_train[:, j]):
fuzzy_vals = fuzz.trapmf(X_train[:, j], [np.min(X_train[:, j]), np.mean(X_train[:, j]), np.median(X_train[:, j]), np.max(X_train[:, j])])
else:
fuzzy_vals = fuzz.trapmf(X_train[:, j], [np.min(X_train[:, j]), np.median(X_train[:, j]), np.mean(X_train[:, j]), np.max(X_train[:, j])])
a.append(fuzzy_vals)
fuzzy_vals = np.array(a).T
y_pred += tree.predict_proba(fuzzy_vals.reshape(-1, fuzzy_vals.shape[1], 1)).reshape(-1, 3)
y_pred /= n_trees
```