亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? siftrules.c

?? 數據挖掘c4.5算法(vc語言版本)歡迎大家下載測試!!!!
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*************************************************************************/
/*									 */
/*	Process sets of rules						 */
/*	---------------------					         */
/*								         */
/*************************************************************************/


#include "defns.i"
#include "types.i"
#include "extern.i"
#include "rulex.i"


ItemNo	*ClassFreq,	/* ClassFreq[c]	= no. items of class c  */
	*Covered,	/* Covered[i]	= no. included rules that cover item i */
	*FalsePos,	/* FalsePos[c]	= no. false positives from rules
					  selected for class c */
	*NoRule,	/* NoRule[c]	= no. items covered by no selected rule */

	*Right,		/* Right[r]	= no. correct rule firings */
	*Wrong;		/* Wrong[r]	= no. incorrect rule firings */

float	*Value,		/* Value[r]	= advantage attributable to rule r or
					  realisable if rule r included */
	SubsetValue,	/* value of best class subset so far */
	CodeWeight;	/* multiplying factor for rule encodings */

Boolean	*RuleIn,	/* RuleIn[r]	= true if rule r included */
	*Subset,	/* best class subset so far */
	**Match;	/* Match[r][i]	= true if rule r fires on item i */

RuleNo	*ClassRules;	/* list of all rules for current target class */

ClassNo	FocusClass;



/*************************************************************************/
/*									 */
/*  Construct an ordered subset (indexed by RuleIndex) of the current	 */
/*  set of rules							 */
/*									 */
/*************************************************************************/


    ConstructRuleset()
/*  ----------------  */
{
    RuleNo r, OldNRules = NRules;

    /*  Allocate tables  */

    Right = (ItemNo *) calloc(NRules+1, sizeof(ItemNo));
    Wrong = (ItemNo *) calloc(NRules+1, sizeof(ItemNo));

    Value = (float *) calloc(NRules+1, sizeof(float));

    RuleIn = (Boolean *) calloc(NRules+1, sizeof(Boolean));
    Subset = (Boolean *) malloc((NRules+1) * sizeof(Boolean));

    ClassRules = (RuleNo *) malloc((NRules+1) * sizeof(RuleNo));

    ClassFreq = (ItemNo *) calloc(MaxClass+1, sizeof(ItemNo));

    Covered = (ItemNo *) calloc(MaxItem+1, sizeof(ItemNo));

    Match = (Boolean **) calloc(NRules+1, sizeof(Boolean *));

    FalsePos = (ItemNo *) calloc(MaxClass+1, sizeof(ItemNo));

    NoRule = (ItemNo *) calloc(MaxClass+1, sizeof(ItemNo));

    ForEach(r, 1, NRules)
    {
	Match[r] = (Boolean *) calloc(MaxItem+1, sizeof(Boolean));
    }

    /*  Cover each class, then order the classes to give an index of rules  */

    InitialiseTables();

    FindRuleCodes();
    CodeWeight = 0.5;

    ForEach(FocusClass, 0, MaxClass)
    {
	CoverClass();
    }

    MakeIndex();
    FindDefault();

    /*  Clear  */

    free(Value);
    free(RuleIn);
    free(ClassRules);
    free(Subset);
    free(Covered);
    free(FalsePos);
    free(NoRule);
    ForEach(r, 1, OldNRules)
    {
	free(Match[r]);
    }
    free(Match);
}



/*************************************************************************/
/*									 */
/*		Initialise all tables used in sifting			 */
/*									 */
/*************************************************************************/


    InitialiseTables()
/*  ----------------  */
{
    ItemNo i;
    RuleNo r;
    ClassNo c;
    float Strength();

    ForEach(r, 1, NRules)
    {
	RuleIn[r] = false;
	Rule[r].Used = Rule[r].Incorrect = 0;
    }

    ForEach(c, 0, MaxClass)
    {
	ClassFreq[c] = 0;
    }

    ForEach(i, 0, MaxItem)
    {
	ClassFreq[Class(Item[i])]++;

	ForEach(r, 1, NRules)
	{
	    Match[r][i] = Strength(Rule[r], Item[i]) > 0.1;

	    if ( Match[r][i] )
	    {
		Rule[r].Used++;
		if ( Class(Item[i]) != Rule[r].Rhs ) Rule[r].Incorrect++;
	    }
	}
    }
}



/*************************************************************************/
/*								         */
/*	Select a subset of the rules for class FocusClass	         */
/*								         */
/*************************************************************************/


    CoverClass()
/*  ----------  */
{
    RuleNo r, RuleCount=0;
    ItemNo i;

    Verbosity(1)
	printf("\nClass %s\n-----\nAction  Change  Value",
		ClassName[FocusClass]);

    ForEach(i, 0, MaxItem)
    {
	Covered[i] = 0;
    }

    ForEach(r, 1, NRules)
    {
	if ( Rule[r].Rhs == FocusClass )
	{
	    RuleCount++;
	    ClassRules[RuleCount] = r;
	}
    }

    if ( ! RuleCount )
    {
	return;
    }

    SubsetValue = 1E10;

    if ( RuleCount <= 10 )
    {
	AllCombinations(RuleCount);
    }
    else
    if ( SIMANNEAL )
    {
	SimAnneal(RuleCount);
    }
    else
    {
	SpotSearch(RuleCount);
    }

    memcpy(RuleIn, Subset, NRules+1);
    Verbosity(1) printf("\n\tBest value %.1f\n", SubsetValue);
}


 
/*************************************************************************/
/*									 */
/*    Try all combinations of rules to find best value			 */
/*									 */
/*************************************************************************/


    AllCombinations(NR)
/*  ---------------  */
    RuleNo NR;
{
    RuleNo r;

    if ( ! NR )
    {
	CalculateValue();
    }
    else
    {
	r = ClassRules[NR];

	AllCombinations(NR-1);

	AddRule(r);
	AllCombinations(NR-1);

	DeleteRule(r);
	Verbosity(1) printf("\n");
    }
}



/*************************************************************************/
/*									 */
/*  Find a good subset by simulated annealing				 */
/*									 */
/*************************************************************************/


    SimAnneal(RuleCount)
/*  ---------  */
    RuleNo RuleCount;
{
    RuleNo r, OutCount;
    short ri, Tries;
    float Temp, Delta;
    Boolean Changed;

    /*  Keep dropping and adding rules until can't improve  */

    for ( Temp = 1000 ; Temp > 0.001 ; Temp *= 0.95 )
    {
	CalculateValue();

	Verbosity(2)
	{
	    OutCount = 0;

	    ForEach(ri, 1, RuleCount)
	    {
		r = ClassRules[ri];

		if ( ! RuleIn[r] )
		{
		    if ( ! (OutCount++ % 3) ) printf("\n\t\t");
		    printf("%d<%d|%d=%.1f> ", r, Right[r], Wrong[r], Value[r]);
		}
	    }

	    printf("\n\n");
	}

	Changed = false;

	for ( Tries = 100 ; ! Changed && Tries > 0 ; Tries-- )
	{
	    /*  Choose a rule to add or delete  */

	    ri = RuleCount * Random + 1;

	    r = ClassRules[ri];

	    Delta = ( RuleIn[r] ? -Value[r] : Value[r] );

	    if ( Delta > 0 || Random < exp(Delta / Temp) )
	    {
		if ( RuleIn[r] )
		{
		    DeleteRule(r);
		}
		else
		{
		    AddRule(r);
		}
		
		Changed = true;
	    }
	}

	if ( ! Changed ) break;
    }

    /*  Try to improve best subset so far by hill-climbing  */

    Verbosity(1) printf("Polish: ");
    memcpy(RuleIn, Subset, NRules+1);
    HillClimb(RuleCount);
}



/*************************************************************************/
/*									 */
/*  Find a good subset by repeated greedy search			 */
/*									 */
/*************************************************************************/


    SpotSearch(RuleCount)
/*  ----------  */
    RuleNo RuleCount;
{
    RuleNo r;
    short ri, Trial;
    float ProbIn;

    ForEach(Trial, 0, 10)
    {
	Verbosity(1) printf("\n    Trial %d:", Trial);

	/*  Add rules randomly to the initial subset  */

	ProbIn = Trial / 10.0;
	ForEach(ri, 1, RuleCount)
	{
	    r = ClassRules[ri];
	    RuleIn[r] = Random < ProbIn;
	}

	HillClimb(RuleCount);
    }
}



/*************************************************************************/
/*									 */
/*  Improve a subset of rules by adding and deleting rules		 */
/*									 */
/*************************************************************************/


    HillClimb(RuleCount)
/*  ---------  */
    RuleNo RuleCount;
{
    RuleNo r, Bestr;
    short ri, OutCount;
    ItemNo i;
    float Delta, BestDelta;

    ForEach(i, 0, MaxItem)
    {
	Covered[i] = 0;
    }

    ForEach(ri, 1, RuleCount)
    {
	r = ClassRules[ri];
	if ( RuleIn[r] )
	{
	    ForEach(i, 0, MaxItem)
	    {
		if ( Match[r][i] )
		{
		    Covered[i]++;
		}
	    }
	}
    }
    
    /*  Add or drop rule with greatest reduction in coding cost  */

    while ( true )
    {
	CalculateValue();

	Verbosity(2)
	{
	    OutCount = 0;

	    ForEach(ri, 1, RuleCount)
	    {
		r = ClassRules[ri];

		if ( ! RuleIn[r] )
		{
		    if ( ! (OutCount++ % 3) ) printf("\n\t\t");
		    printf("%d<%d|%d=%.1f> ", r, Right[r], Wrong[r], Value[r]);
		}
	    }

	    printf("\n\n");
	}

	Bestr = BestDelta = 0;
	ForEach(ri, 1, RuleCount)
	{
	    r = ClassRules[ri];
	    Delta = ( RuleIn[r] ? -Value[r] : Value[r] );
	    if ( Delta > BestDelta )
	    {
		Bestr = r;
		BestDelta = Delta;
	    }
	}
	if ( ! Bestr ) break;

	if ( RuleIn[Bestr] )
	{
	    DeleteRule(Bestr);
	}
	else
	{
	    AddRule(Bestr);
	}
    }
}



/*************************************************************************/
/*								         */
/*  Find the number of correct and incorrect rule firings for rules      */
/*  for class FocusClass and hence determine the Value of the rules.     */
/*  If best so far, remember.						 */
/*								         */
/*************************************************************************/


    CalculateValue()
/*  --------------  */
{
    RuleNo r, Selected=0, InCount;
    ItemNo i, Times, FPos=0, FNeg=0, SumCover=0;
    float BaseBits, RuleBits=0, NewBits, ExceptionBits();
    ClassNo ThisClass;
    Boolean *RuleMatch;

    ForEach(i, 0, MaxItem)
    {
	ThisClass = Class(Item[i]);

	if ( Covered[i] )

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品久久人人做人人爰| 91女厕偷拍女厕偷拍高清| 欧美美女网站色| 一区二区三区丝袜| 欧美日本一区二区| 日本特黄久久久高潮| 精品乱人伦一区二区三区| 久久99国内精品| 国产欧美一区二区精品忘忧草| 高清国产午夜精品久久久久久| 中文字幕不卡三区| 色综合视频在线观看| 亚洲一区二区三区自拍| 这里只有精品免费| 国产一区视频在线看| 国产精品成人免费| 欧美午夜宅男影院| 久久精品国产亚洲aⅴ | 色久综合一二码| 石原莉奈一区二区三区在线观看| 欧美一区二区免费视频| 国产夫妻精品视频| 亚洲柠檬福利资源导航| 精品美女在线观看| 99精品视频一区二区| 日本伊人精品一区二区三区观看方式| 2021中文字幕一区亚洲| 色婷婷国产精品综合在线观看| 日韩激情一二三区| 国产精品传媒在线| 欧美一区二区三区公司| 成人综合婷婷国产精品久久蜜臀 | 色欧美88888久久久久久影院| 亚洲bdsm女犯bdsm网站| 一区二区三区四区中文字幕| 欧美一二三区在线| 一本色道久久综合亚洲aⅴ蜜桃| 三级欧美在线一区| 国产精品久久久久久久裸模 | 91视频观看视频| 美女国产一区二区三区| 日韩毛片视频在线看| 欧美一区二区精品在线| 99re免费视频精品全部| 麻豆成人av在线| 亚洲综合网站在线观看| 国产区在线观看成人精品| 欧美久久久久久久久中文字幕| 粗大黑人巨茎大战欧美成人| 亚洲第一成人在线| 自拍偷自拍亚洲精品播放| 精品电影一区二区| 欧美福利视频导航| 色一情一乱一乱一91av| 成人久久18免费网站麻豆| 日韩高清在线观看| 午夜天堂影视香蕉久久| 亚洲精品乱码久久久久久黑人| 久久女同互慰一区二区三区| 欧美一级精品大片| 欧美日韩精品欧美日韩精品一 | 国产成人精品一区二| 美女一区二区视频| 午夜精品aaa| 亚洲大片在线观看| 伊人开心综合网| 亚洲视频小说图片| 中文字幕亚洲综合久久菠萝蜜| 久久天天做天天爱综合色| 日韩一区二区三区免费看| 91福利精品第一导航| 色综合天天综合网天天看片| av男人天堂一区| 国产不卡免费视频| 国产凹凸在线观看一区二区| 久久99国产精品久久99果冻传媒| 日韩中文字幕麻豆| 日本亚洲一区二区| 日韩电影在线观看网站| 亚洲丶国产丶欧美一区二区三区| 一区二区三区精品在线观看| 亚洲欧美日韩国产成人精品影院| 国产精品黄色在线观看 | 中文字幕亚洲在| 最新国产精品久久精品| 国产精品乱码人人做人人爱| 欧美国产日本韩| 亚洲免费av在线| 亚洲综合色丁香婷婷六月图片| 亚洲一区二区三区三| 首页综合国产亚洲丝袜| 奇米777欧美一区二区| 麻豆专区一区二区三区四区五区| 麻豆精品在线视频| 国产精品一区一区三区| 成人免费看视频| 色婷婷一区二区三区四区| 欧美性生交片4| 欧美一区二区免费| 国产午夜精品福利| 自拍偷拍欧美精品| 天天影视网天天综合色在线播放| 日韩电影在线一区二区| 国产真实乱偷精品视频免| 成人福利视频在线看| 欧美日韩一区二区在线观看| 日韩欧美国产一区二区在线播放| www欧美成人18+| 中文字幕五月欧美| 日本人妖一区二区| 成人综合婷婷国产精品久久蜜臀 | 国产精品嫩草久久久久| 有码一区二区三区| 免费在线成人网| 成人av网站在线观看| 欧美性一二三区| 国产亚洲一区二区三区| 一区二区三区精品在线观看| 韩日欧美一区二区三区| 色婷婷综合激情| 久久在线观看免费| 亚洲一线二线三线久久久| 国产综合一区二区| 欧美伊人久久久久久久久影院| 欧美va亚洲va在线观看蝴蝶网| 中文字幕在线不卡视频| 蜜桃视频在线一区| 99re成人精品视频| 日韩免费成人网| 亚洲精品老司机| 成人黄色网址在线观看| 日韩一区二区影院| 亚洲自拍偷拍综合| 成人禁用看黄a在线| 欧美丰满少妇xxxbbb| 亚洲欧洲在线观看av| 国产在线精品一区二区三区不卡| 欧美午夜宅男影院| 成人免费在线观看入口| 久久69国产一区二区蜜臀| 欧美伊人久久久久久午夜久久久久| 久久五月婷婷丁香社区| 男女男精品视频| 欧美在线一二三| 欧美激情综合五月色丁香| 青椒成人免费视频| 欧美视频在线不卡| 国产精品成人免费在线| 国产成人av电影在线观看| 制服丝袜在线91| 亚洲一二三级电影| 91小视频免费看| 国产精品久久久久久户外露出| 国产另类ts人妖一区二区| 欧美一区二区三区视频免费播放| 亚洲综合在线视频| 91在线一区二区| 欧美国产97人人爽人人喊| 国产麻豆欧美日韩一区| 日韩一区二区在线播放| 日韩二区三区四区| 91麻豆精品国产91久久久更新时间 | 欧美日韩免费高清一区色橹橹| 国产精品久久99| www.亚洲在线| 国产精品毛片a∨一区二区三区| 国产精品一区二区在线观看不卡 | 免费日本视频一区| 欧美精品第1页| 丝袜美腿高跟呻吟高潮一区| 欧美日韩中文一区| 亚洲国产视频在线| 欧美精品三级日韩久久| 日韩激情av在线| 日韩午夜av一区| 麻豆国产精品官网| www日韩大片| 丁香激情综合国产| 1区2区3区精品视频| 成人av网在线| 亚洲激情男女视频| 欧美日韩精品一区视频| 调教+趴+乳夹+国产+精品| 欧美一级日韩免费不卡| 黄一区二区三区| 中文天堂在线一区| 色呦呦国产精品| 亚洲国产wwwccc36天堂| 在线播放91灌醉迷j高跟美女| 蜜桃91丨九色丨蝌蚪91桃色| 久久蜜桃香蕉精品一区二区三区| 国产一区二区影院| 亚洲视频免费在线观看| 欧美日韩国产bt| 激情综合亚洲精品| 亚洲欧美一区二区视频| 欧洲一区在线观看| 久88久久88久久久| 国产精品第四页| 日韩欧美另类在线|