91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 5KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2021-05-14
  • 語言: C/C++
  • 標簽: c++??

資源簡介

使用c++語言實現決策樹分類算法,經過測試之后無需修改就可以完美運行,內附測試數據,十分方便快捷

資源截圖

代碼片段和文件信息

#include
#include
#include
#include
#include
#include
#include?
using?namespace?std;
#define?MAXLEN?6//定義的屬性個數?

//自定義的決策樹節點
struct?Node{
string?attribute;//屬性值
string?arrived_value;//到達的屬性值
vector?childs;//所有的分差節點,vector裝入?
Node(){
//?初始化的時候均設為空值?
attribute?=?““;
arrived_value?=?““;
}
}*?root;

vector??>?state;//保存整個實例集
vector??item(MAXLEN);//對應實例集中的某一行
vector??attribute_row;//保存首行即屬性行數據
string?attrName[MAXLEN]?=?
{“RID“?“model“?“perfume“?“price“?“income“?“buyaction“};
map?>?map_attribute_values;//存儲屬性對應的所有的值
int?tree_size?=?0;

//?將數據以文件流的形式輸入?
void?DataInit(){

ifstream?fin(“data2.txt“);?
string?s;
int?i?j;?
while(fin?>>?s?s.compare(“end“)?!=?0){
//當輸入結束時s.compare(“end“)的值為-1?
item[0]?=?s; //第一個值保存的是RID?
for(int?i?=?1;i? fin?>>?item[i];
}
state.push_back(item);
}
for(j?=?0;?j? attribute_row.push_back(attrName[j]); //?初始化屬性欄值?
}
fin.close();
}

//?log2為底通過換底公式換成自然數底數
double?lg2(double?n)??
{??
????return?log(n)/log(2);??
}?

//根據數據實例存儲屬性對應的所有的值
void?MapAttributeValue(){
unsigned?int?ijk;
bool?exited?=?false;
vector?values;
//按照列遍歷(每個屬性對應一列)
for(i?=?1;?i? for?(j?=?0;?j? for?(k?=?0;?k? //如果該屬性值已經存在則退出循環?
if(!values[k].compare(state[j][i]))?
{
exited?=?true;
break;
}
}
//如果循環后的exited值仍為false說明該屬性值并未出現過
//將其加入到暫時存放的向量中?
if(!exited){
values.push_back(state[j][i]);
}
exited?=?false; //注意此處重置值?
}
map_attribute_values[attrName[i]]?=?values; //相對應的放入?

values.clear(); //為了存放下一次的屬性值清空?
}
}

//根據具體屬性和值來計算熵
double?Entropy(vector??>?remain_state?string?attribute?string?valuebool?ifparent){
vector?count?(20);
int?ij;
bool?flag?=?false;
for(j?=?1;?j? if(flag)?break;
if(!attribute_row[j].compare(attribute)){
for(i?=?1;?i? if((!ifparent&&!remain_state[i][j].compare(value))?||?ifparent){//ifparent記錄是否算父節點
if(!remain_state[i][MAXLEN?-?1].compare(“yes“)){
count[0]++; //count[0]記錄實例中yes的值?
}
else?count[1]++;//count[1]記錄實例中no的值?
}
}
flag?=?true;
}
}
//全部是正實例或者負實例
if(count[0]?==?0?||?count[1]?==?0?)?return?0;
//具體計算熵
double?sum?=?count[0]?+?count[1];
double?entropy?=?-count[0]/sum?*?lg2((double)count[0]?/?sum)?
-?count[1]/sum?*?lg2((double)count[1]?/?sum);
return?entropy;
}

//計算按照屬性attribute劃分當前剩余實例的信息增益
double?Gain(vector??>?remain_state?string?attribute){
unsigned?int?jkm;
//首先求不做劃分時的熵,即根的熵值?
double?parent_entropy?=?Entropy(remain_state?attribute?““?true);
double?children_entropy?=?0;
//然后求做劃分后各個值的熵
vector?values?=?map_attribute_values[attribute];
vector<

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????9523??2015-05-28?14:08??data2.txt

?????文件???????9349??2015-05-28?13:51??決策樹分類5.cpp

-----------?---------??----------?-----??----

????????????????18872????????????????????2


評論

共有 條評論