c++實現logistic迴歸代碼

來源:互聯網
上載者:User

標籤:

測試題目:

代碼說明:

1.在main中我用了一個輸入檔案來表示輸入,測試時應去除

2.以下函數分別是計算預測值,計算costfunction,羅輯迴歸的執行

3.具體類似於線性迴歸,可輔助線性迴歸之梯度下降

代碼如下:

#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#include<vector>#include<iostream>using namespace std;double hypothesis(vector<double> &feature,vector<double>&w){    double sum=0.0;    for(int i=0;i<feature.size();i++){     sum+=w[i]*feature[i];    }    return 1/(1+exp(-sum));}double cost_fuction(vector<vector<double> > &feature_sample,vector<double> &w,vector<double>&lable){    double sum=0.0;    for(int i=0;i<lable.size();i++){        sum+=-lable[i]*log(hypothesis(feature_sample[i],w))-(1-lable[i])*log(1-hypothesis(feature_sample[i],w));    }    return sum/lable.size();}void logic_regression(vector<vector<double> >&feature_sample,vector<double> &lable,vector<double> &w,double a){    vector<double> delta_w;    for(int j=0;j<feature_sample[0].size();j++){        double sum=0.0;        for(int i=0;i<lable.size();i++){            sum+=(hypothesis(feature_sample[i],w)-lable[i])*feature_sample[i][j];        }        delta_w.push_back(sum/lable.size()*a);    }    for(int i=0;i<w.size();i++){        w[i]-=delta_w[i];    }    cout<<cost_fuction(feature_sample,w,lable)<<endl;}int main(){    freopen("in.txt","r",stdin);    int feature_num,training_num,t;    double a;    cin>>feature_num>>training_num>>a>>t;    vector<vector<double> >feature_sample;    vector<double> tem;    vector<double> lable;    vector<double> w;    double m;    for(int i=0;i<training_num;i++){        tem.clear();        tem.push_back(1);        for(int j=0;j<feature_num;j++){            cin>>m;            tem.push_back(m);        }        cin>>m;        lable.push_back(m);        feature_sample.push_back(tem);    }    for(int i=0;i<=feature_num;i++) w.push_back(0);    while(t--) logic_regression(feature_sample,lable,w,a);    for(int i=0;i<=feature_num;i++) cout<<w[i]<<" ";    return 0;}

運行結果解圖


c++實現logistic迴歸代碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.