關(guān)于整理moore數(shù)據(jù)集的一些操作

  • moore數(shù)據(jù)集有10個文件扶平,可以把前面若干行刪除后只留下逗號分隔的每行一條流的文件txt文件。


    10個文件
  • 然后可以使用:cat entry01.txt >> total.txtcat entry02.txt >> total.txt最后到cat entry10.txt >> total.txt將10個txt文件的內(nèi)容全部追加合并到total.txt中。>>是輸出重定向命令飞苇。
  • 使用awk命令可以求出對應(yīng)的一列的最大值或者最小值


    注意指定分隔符

    awk求最值
  • 使用sed命令#sed -i "s/?/0/g" total.txt將文本中一些特殊字符串替換成其他的,比如一行數(shù)據(jù)的?號全替換成0,同理可將"Y,"和"N,"等字符替換成"0,"和"1,"數(shù)字房蝉,加上逗號是為了防止將分類中的YN字符也被替換
  • 使用c++程序,打開total文件找到各列的最大值和最小值微渠,并保存到另一個文件find_max_min.txt搭幻。
#include<vector>
#include<fstream>
#include<string>
using namespace std;
//字符串分割函數(shù)
void string_split(const string &str, vector<double> &v_double, const string &delim)
{
    int pos1 = 0, pos2 = 0;
    int len = str.length();
    while (pos1 < len && pos2 != string::npos)
    {
        int count = 0;
        pos2 = str.find_first_of(delim, pos1);
        if (pos2 != string::npos)
        {
            if (pos1 < pos2)
            {
                count = pos2 - pos1;
            }
        }
        else if (pos1<len)
        {
            //pos2到了最后字符串末尾,對于本次處理moore數(shù)據(jù)集逞盆,最后一列是分類字符串檀蹋,不是數(shù)字,因此要放棄
            count = 0;
        }
        if (count > 0)
        {
            string temp = str.substr(pos1, count);
            v_double.push_back(stod(temp)); //將每一個string值轉(zhuǎn)換成double保存起來
        }
        
        pos1 = pos2 + 1;
    }
}

const int columns = 256;
int main()
{
    ifstream in("total——將其他字符都替換成了0或1.txt");
    if (!in.is_open())
    {
        return 1;
    }
    vector<double> v_double_max(columns, 0.0);  //保存各列的最大值
    vector<double> v_double_min(columns, 100000000.0);  //保存各列的最小值
    //分割讀入的每一行字符串,并存入分割出的字符串?dāng)?shù)組到vv_str
    while (!in.eof())
    {
        string line;
        getline(in, line);
        vector<double> line_double;
        string_split(line, line_double, ",");
        int length = line_double.size();
        for (int i = 0; i < length; i++)
        {
            //更新最大值
            if (line_double[i]>v_double_max[i])
            {
                v_double_max[i] = line_double[i];
            }
            //更新最小值
            else if (line_double[i]<v_double_min[i])
            {
                v_double_min[i] = line_double[i];
            }
        }
    
    }
    in.close();

    //從vv_str輸出字符串到output.txt
    ofstream out("find_max_min.txt");
    if (!out.is_open())
    {
        return 1;
    }
    
    //第一行輸出各列最大值
    for (double d : v_double_max)
    {
            out << d << ",";
    }
    out << '\n';    //完成一行輸出
    //第二行輸出各列最小值
    for (double d : v_double_min)
    {
        out << d << ",";
    }
    out << '\n';    //完成一行輸出
    out.close();
    return 0;
}
第一行為各列最大值云芦,第二行為各列最小值
  • 將total.txt文件按照最后一列的流量分類分拆為12個txt文件俯逾。


    得到各個類別的流量集合
  • 利用前面得到的各列的最值,分別對每一個流量類別的元素進(jìn)行歸一化到0-1進(jìn)行處理舅逸。(當(dāng)前值-最小值)/(最大值-最小值)桌肴。

#include<vector>
#include<fstream>
#include<string>
#include<iostream>
using namespace std;

//字符串分割函數(shù)
void string_split(const string &str, vector<double> &v_double, const string &delim)
{
    int pos1 = 0, pos2 = 0;
    int len = str.length();
    while (pos1 < len && pos2 != string::npos)
    {
        int count = 0;
        pos2 = str.find_first_of(delim, pos1);
        if (pos2 != string::npos)
        {
            if (pos1 < pos2)
            {
                count = pos2 - pos1;
            }
        }
        else if (pos1<len)
        {
            //pos2到了最后字符串末尾
            count = 0;
        }
        if (count > 0)
        {
            string temp = str.substr(pos1, count);
            v_double.push_back(stod(temp)); //將每一個string值轉(zhuǎn)換成double保存起來
        }
        pos1 = pos2 + 1;
    }
}

const int columns = 256;
int main()
{
    string file1 = "find_max_min_diff.txt";
    string file2 = "WWW.txt";
    string out_file = "WWW_normalize0-1.txt";
    ifstream in(file1);
    if (!in.is_open())
    {
        cout << "error to read file: " << file1 << endl;
        return 1;
    }
    vector<double> v_double_max;    //保存各列的最大值
    string line1;
    getline(in, line1);
    string_split(line1, v_double_max, ",");

    vector<double> v_double_min;    //保存各列的最小值
    string line2;
    getline(in, line2);
    string_split(line2, v_double_min, ",");
    
    vector<double> v_double_diff;   //保存各列最大最小差值
    string line3;
    getline(in, line3);
    string_split(line3, v_double_diff, ",");
    in.close();
    
    //讀取一個類別的文件,并將每一行的各個數(shù)值歸一化到0-1區(qū)間
    ifstream in_class(file2);
    if (!in_class.is_open())
    {
        cout << "error to read file: " << file2 << endl;
        return 1;
    }

    //寫入一個該類別歸一化之后的文件
    ofstream out(out_file);
    if (!out.is_open())
    {
        cout << "error to read file: " << out_file << endl;
        return 1;
    }
    //處理每一行輸入和輸出
    while (!in_class.eof())
    {
        string line;
        getline(in_class, line);
        vector<double> line_double;
        string_split(line, line_double, ",");
        int length = line_double.size();
        for (int i = 0; i < length; i++)
        {
            //歸一化每個值
            double result = 0;
            if (0 != v_double_diff[i])
            {
                result = (line_double[i] - v_double_min[i]) / v_double_diff[i];
            }
            //輸出每個值到歸一化文件
            out << result << ",";
        }
        //每行輸出后面補(bǔ)0琉历,直到每行有256個數(shù)
        for (int i = length; i < 255; i++)
        {
            out << 0 << ",";
        }
        out << 0 << endl;   //輸出一行
    }
    in_class.close();
    out.close();
    return 0;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末坠七,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子旗笔,更是在濱河造成了極大的恐慌彪置,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蝇恶,死亡現(xiàn)場離奇詭異拳魁,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)撮弧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進(jìn)店門潘懊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人贿衍,你說我怎么就攤上這事授舟。” “怎么了舌厨?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵岂却,是天一觀的道長。 經(jīng)常有香客問我,道長躏哩,這世上最難降的妖魔是什么署浩? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮扫尺,結(jié)果婚禮上筋栋,老公的妹妹穿的比我還像新娘。我一直安慰自己正驻,他們只是感情好弊攘,可當(dāng)我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著姑曙,像睡著了一般襟交。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上伤靠,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天捣域,我揣著相機(jī)與錄音,去河邊找鬼宴合。 笑死焕梅,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的卦洽。 我是一名探鬼主播贞言,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼阀蒂!你這毒婦竟也來了该窗?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤脂新,失蹤者是張志新(化名)和其女友劉穎挪捕,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體争便,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年断医,在試婚紗的時候發(fā)現(xiàn)自己被綠了滞乙。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡鉴嗤,死狀恐怖斩启,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情醉锅,我是刑警寧澤兔簇,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響垄琐,放射性物質(zhì)發(fā)生泄漏边酒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一狸窘、第九天 我趴在偏房一處隱蔽的房頂上張望墩朦。 院中可真熱鬧,春花似錦翻擒、人聲如沸氓涣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽劳吠。三九已至,卻和暖如春巩趁,著一層夾襖步出監(jiān)牢的瞬間痒玩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工晶渠, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留凰荚,地道東北人。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓褒脯,卻偏偏與公主長得像便瑟,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子番川,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,055評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 基礎(chǔ)命令 主要的命令和快捷鍵 Linux系統(tǒng)命令由三部分組成:cmd + [options]+[operation...
    485b1aca799e閱讀 1,099評論 0 0
  • 第 2 章 SHELL 基礎(chǔ)知識2.1 shell腳本我們在上面簡單介紹了一下什么是shell腳本到涂,現(xiàn)在我們來進(jìn)一...
    LiWei_9e4b閱讀 1,574評論 0 0
  • sed與awk實例 文本間隔 在每一行后面增加一空行 將原來的所有空行刪除并在每一行后面增加一空行。這樣在輸出的文...
    stuha閱讀 1,901評論 0 21
  • 一颁督、前言 我們都知道践啄,在Linux中一切皆文件,比如配置文件沉御,日志文件屿讽,啟動文件等等。如果我們相對這些文件進(jìn)行一些...
    以七v為書閱讀 1,518評論 0 5
  • 本文承接之前寫的三十分鐘學(xué)會AWK一文吠裆,在學(xué)習(xí)完AWK之后伐谈,趁熱打鐵又學(xué)習(xí)了一下SED,不得不說這兩個工具真的堪稱...
    mylxsw閱讀 4,401評論 3 74