Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python scikit学习随机森林分类器概率阈值_Python_Arrays_List_Numpy_Scikit Learn - Fatal编程技术网

Python scikit学习随机森林分类器概率阈值

Python scikit学习随机森林分类器概率阈值,python,arrays,list,numpy,scikit-learn,Python,Arrays,List,Numpy,Scikit Learn,我在用它做预测任务 来自sklearn.employ的 模型=随机森林分类器(n_估计值=300,n_作业=-1) 模型拟合(x\U系列、y\U系列) 模型预测概率(x检验) 有171个类需要预测。 我只想预测那些类,其中predict\u proba(class)至少是90%。下面的所有内容都应设置为0 例如,考虑到以下情况: 1234567 0 0.0 0.0 0.1 0.9 0.0 0.0 0.0 1 0.2 0.1 0.1 0.3 0.1 0.0 0.2 2 0.1 0.1 0.

我在用它做预测任务

来自sklearn.employ的

模型=随机森林分类器(n_估计值=300,n_作业=-1)
模型拟合(x\U系列、y\U系列)
模型预测概率(x检验)
有171个类需要预测。 我只想预测那些类,其中
predict\u proba(class)
至少是90%。下面的所有内容都应设置为
0

例如,考虑到以下情况:

1234567
0  0.0 0.0 0.1 0.9 0.0 0.0 0.0
1  0.2 0.1 0.1 0.3 0.1 0.0 0.2
2  0.1 0.1 0.1 0.1 0.1 0.4 0.1
3  1.0 0.0 0.0 0.0 0.0 0.0 0.0
我的预期产出是:

04
1   0
2   0   
3   1
您可以按如下方式使用:

from sklearn.ensemble import RandomForestClassifier
import numpy as np

model = RandomForestClassifier(n_estimators=300, n_jobs=-1)
model.fit(x_train,y_train)
preds = model.predict_proba(x_test)

#preds = np.array([[0.0, 0.0, 0.1, 0.9, 0.0, 0.0, 0.0],
#                  [ 0.2, 0.1, 0.1, 0.3, 0.1, 0.0, 0.2],
#                  [ 0.1 ,0.1, 0.1, 0.1, 0.1, 0.4, 0.1],
#                  [ 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]])

r = np.zeros(preds.shape[0], dtype=int)
t = np.argwhere(preds>=0.9)

r[t[:,0]] = t[:,1]+1
r
array([4, 0, 0, 1])
您可以按如下方式使用:

from sklearn.ensemble import RandomForestClassifier
import numpy as np

model = RandomForestClassifier(n_estimators=300, n_jobs=-1)
model.fit(x_train,y_train)
preds = model.predict_proba(x_test)

#preds = np.array([[0.0, 0.0, 0.1, 0.9, 0.0, 0.0, 0.0],
#                  [ 0.2, 0.1, 0.1, 0.3, 0.1, 0.0, 0.2],
#                  [ 0.1 ,0.1, 0.1, 0.1, 0.1, 0.4, 0.1],
#                  [ 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]])

r = np.zeros(preds.shape[0], dtype=int)
t = np.argwhere(preds>=0.9)

r[t[:,0]] = t[:,1]+1
r
array([4, 0, 0, 1])

您可以使用列表理解:

import numpy as np

# dummy predictions - 3 samples, 3 classes
pred = np.array([[0.1, 0.2, 0.7],
                 [0.95, 0.02, 0.03],
                 [0.08, 0.02, 0.9]])

# first, keep only entries >= 0.9:
out_temp = np.array([[x[i] if x[i] >= 0.9 else 0 for i in range(len(x))] for x in pred])
out_temp
# result:
array([[0.  , 0.  , 0.  ],
       [0.95, 0.  , 0.  ],
       [0.  , 0.  , 0.9 ]])

out = [0 if not x.any() else x.argmax()+1 for x in out_temp]
out
# result:
[0, 1, 3]

您可以使用列表理解:

import numpy as np

# dummy predictions - 3 samples, 3 classes
pred = np.array([[0.1, 0.2, 0.7],
                 [0.95, 0.02, 0.03],
                 [0.08, 0.02, 0.9]])

# first, keep only entries >= 0.9:
out_temp = np.array([[x[i] if x[i] >= 0.9 else 0 for i in range(len(x))] for x in pred])
out_temp
# result:
array([[0.  , 0.  , 0.  ],
       [0.95, 0.  , 0.  ],
       [0.  , 0.  , 0.9 ]])

out = [0 if not x.any() else x.argmax()+1 for x in out_temp]
out
# result:
[0, 1, 3]