我正在尝试使用分类的决策树根据某些参数来识别两个类(重命名为0和1)。我使用数据集训练它,然后在“测试数据集”上运行它。当我尝试计算测试数据集中每个数据点的概率时,它仅返回0或1。我想知道是什么问题。
这是示例代码:
clf=tree.DecisionTreeClassifier(random_state=0)
trained=clf.fit(data,identifier) # training data where identifier is 0 or 1
predict=trained.predict(test_data)
结果是:
In [9]: predict
Out[9]:
array([0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0,
1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0,
0, 0, 1, 0, 0, 0])
In [10]: trained.predict_proba(test_data)[:,1]
Out[10]:
array([ 0., 0., 0., 0., …Run Code Online (Sandbox Code Playgroud) 输入:
0 77 1 2 3 5
0 78 2 4 6 1
0 78 1 2 3 5
3 79 0 4 5 2
3 79 6 8 2 1
3 79 1 2 3 1
Run Code Online (Sandbox Code Playgroud)
输出:(为相同的行添加第3列值并取第4列,第5列和第6列中的所有值的平均值)
0 77 1.0 2.0 3.0 5.0
0 78 3.0 3.0 4.5 3.0
3 79 7.0 4.6 3.3 1.3
Run Code Online (Sandbox Code Playgroud) 我想读一个包含9列的"100万"行的文件.如果文件最多有200,000行,该程序运行良好,否则我看到以下错误:
分段错误:核心转储
错误退出代码:139
问题是我想读取文件,以便我可以读取不同列中的值,因此,我不能使用"fgets"来扫描整行.我找不到解决这个问题的好方法,我可以得到一些帮助吗?
这是我的程序的快照(省略了"y"的定义(如下所示)):
int main(){
int number=290000;
int k,u,i,n = 10000;
float ns_ux[number], ns_uy[number], ns_uz[number], xn[number], yn[number], zn[number];
float l[number],b[number], ns[number], xf,x0,step,s;
FILE *fp=NULL;
fp=fopen("File_new.txt","w");
printf("Enter x0, xf, no. of subintervals: ");
scanf("%f%f%d",&x0, &xf,&n);
FILE* val= NULL;
printf("k xn yn zn int_val tau \n");
val=fopen("file.txt", "r");
for(u=0;u<=(number-1);u++){
fscanf(val,"%f %f %f %f %f %f %f %f %f", &xn[u], &yn[u], &zn[u], &ns_ux[u], &ns_uy[u], &ns_uz[u], &l[u], &b[u], &ns[u]);// \t is tab
}
for(k=0;k<=(number-1);k++){
step = (xf-x0)/n;
s = y(x0,xn[k],yn[k], zn[k], ns_ux[k], …Run Code Online (Sandbox Code Playgroud)