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

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

?? classifierdlg.cpp

?? 使用SVM分類的方法
?? CPP
字號:
// ClassifierDlg.cpp : implementation file
//

#include "stdafx.h"
#include "Classifier.h"
#include "ClassifierDlg.h"
#include "svm.h"
#include <list>
using namespace std;
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
int XLEN , YLEN;
CWnd *pMainWnd;
list<point> point_list;
HBRUSH brush1,brush2,	brush3 ;
HDC window_dc;
HBITMAP buffer;
HDC buffer_dc;
COLORREF colors[] =
{
	RGB(0,0,0),
	RGB(0,120,120),
	RGB(120,120,0),
	RGB(120,0,120),
	RGB(0,200,200),
	RGB(200,200,0),
	RGB(200,0,200)
};
svm_problem prob;
svm_model *model;
svm_parameter param;
svm_node *x_space;
	svm_node x[3];

class CAboutDlg : public CDialog
{
public:
	CAboutDlg();

// Dialog Data
	//{{AFX_DATA(CAboutDlg)
	enum { IDD = IDD_ABOUTBOX };
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CAboutDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	//{{AFX_MSG(CAboutDlg)
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
	//{{AFX_DATA_INIT(CAboutDlg)
	//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAboutDlg)
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
	//{{AFX_MSG_MAP(CAboutDlg)
		// No message handlers
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CClassifierDlg dialog

CClassifierDlg::CClassifierDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CClassifierDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CClassifierDlg)
	m_strFemaleFileName = _T("");
	m_strMaleFileName = _T("");
	m_strTestFileName = _T("");
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
	pMainWnd=this;
}

void CClassifierDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CClassifierDlg)
	DDX_Text(pDX, IDC_EDITFEMALE, m_strFemaleFileName);
	DDX_Text(pDX, IDC_EDITMALE, m_strMaleFileName);
	DDX_Text(pDX, IDC_EDITTEST, m_strTestFileName);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CClassifierDlg, CDialog)
	//{{AFX_MSG_MAP(CClassifierDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDC_DATASCALE, OnDatascale)
	ON_BN_CLICKED(IDC_TEST, OnTest)
	ON_BN_CLICKED(IDC_MALE, OnMale)
	ON_BN_CLICKED(IDC_FEMALE, OnFemale)
	ON_BN_CLICKED(IDC_LOADTEXT, OnLoadtext)
	ON_WM_DESTROY()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CClassifierDlg message handlers

BOOL CClassifierDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Add "About..." menu item to system menu.

	// IDM_ABOUTBOX must be in the system command range.
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	// TODO: Add extra initialization here
	brush1 = CreateSolidBrush(colors[4]);
	brush2 = CreateSolidBrush(colors[5]);
	brush3 = CreateSolidBrush(colors[6]);

    GetDlgItem(IDC_TESTDRAW)->GetClientRect(&rect1);
	XLEN =rect1.Width();
	YLEN=rect1.Height();

	window_dc =GetDlgItem(IDC_TESTDRAW)->GetDC()->m_hDC;
	buffer = CreateCompatibleBitmap(window_dc, XLEN, YLEN);
	buffer_dc = CreateCompatibleDC(window_dc);
		SelectObject(buffer_dc, buffer);
	PatBlt(buffer_dc, 0, 0, XLEN, YLEN, BLACKNESS);
	
	return TRUE;  // return TRUE  unless you set the focus to a control
}

void CClassifierDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CClassifierDlg::OnPaint() 
{
    HDC hdc;
	PAINTSTRUCT ps;
	HWND hwnd=GetDlgItem(IDC_TESTDRAW)->m_hWnd;
	hdc = ::BeginPaint(hwnd, &ps);
	::BitBlt(hdc, 0, 0, XLEN, YLEN, buffer_dc, 0, 0, SRCCOPY);
	::EndPaint(hwnd, &ps);
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
	

}

// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CClassifierDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}

void CClassifierDlg::OnDatascale() 
{
	// TODO: Add your control notification handler code here
	float height,weight;
	FILE *fileMale=fopen(m_strMaleFileName,"r"); 
	FILE *fileFemale=fopen(m_strFemaleFileName,"r"); 
	FILE *fileResult=fopen("result.txt","w"); 
	int xingbie=1;//1表示MALE

	while (TRUE)
	{
		//讀身高數據
		if(EOF==fscanf(fileMale,"%f",&height))
		{
			
			break;
		}
		fprintf(fileResult,"%d",xingbie);
		fprintf(fileResult,"%c",' ');
		fprintf(fileResult,"%d",1);
        fprintf(fileResult,"%c",':');
		fprintf(fileResult,"%f",height/HEIGHT_SCALE);
		fprintf(fileResult,"%c",' ');
		
        //讀取體重數據
		if(EOF==fscanf(fileMale,"%f",&weight))
		{
			
			break;
		}
		fprintf(fileResult,"%d",2);
        fprintf(fileResult,"%c",':');
		fprintf(fileResult,"%f",weight/WEIGHT_SCALE);
		fprintf(fileResult,"%c",'\n');
	}
	xingbie=-1;//1表示FEMALE
	while (TRUE)
	{
		//讀身高數據
		if(EOF==fscanf(fileFemale,"%f",&height))
		{
			
			break;
		}
		fprintf(fileResult,"%d",xingbie);
		fprintf(fileResult,"%c",' ');
		fprintf(fileResult,"%d",1);
        fprintf(fileResult,"%c",':');
		fprintf(fileResult,"%f",height/HEIGHT_SCALE);
		fprintf(fileResult,"%c",' ');
		
        //讀取體重數據
		if(EOF==fscanf(fileFemale,"%f",&weight))
		{
			
			break;
		}
		fprintf(fileResult,"%d",2);
        fprintf(fileResult,"%c",':');
		fprintf(fileResult,"%f",weight/WEIGHT_SCALE);
		fprintf(fileResult,"%c",'\n');
	}
	
	//fscanf(file,"%c",&c);
	//fscanf(file,"%f",&weight);
	fclose(fileMale);
	fclose(fileFemale);
	fclose(fileResult);

	
}

void CClassifierDlg::OnTest() 
{
	// TODO: Add your control notification handler code here
	FILE *fp = fopen("result.txt","r");	
						if(fp)
						{
							char buf[4096];
							while(fgets(buf,sizeof(buf),fp))
							{
								int v;
								double x,y;
								if(sscanf(buf,"%d%*d:%lf%*d:%lf",&v,&x,&y)!=3)
									break;
								point p = {x,y,v};
								point_list.push_back(p);
							}
							fclose(fp);
							draw_all_points();
						}
			if(point_list.empty()) return;


	int i,j;
	
	// default values
	param.svm_type = C_SVC;
	param.kernel_type =POLY;
	param.degree = 3;
	param.gamma = 0;
	param.coef0 = 0;
	param.nu = 0.5;
	param.cache_size = 100;
	param.C = 1000;
	param.eps = 1e-10;
	param.p = 0.1;
	param.shrinking = 1;
	param.probability = 0;
	param.nr_weight = 0;
	param.weight_label = NULL;
	param.weight = NULL;
	// build problem


	prob.l = point_list.size();
	prob.y = new double[prob.l];
		if(param.gamma == 0) param.gamma = 0.5;
		x_space = new svm_node[3 * prob.l];
		prob.x = new svm_node *[prob.l];

		i = 0;
		for (list<point>::iterator q = point_list.begin(); q != point_list.end(); q++, i++)
		{
			x_space[3 * i].index = 1;
			x_space[3 * i].value = q->x;
			x_space[3 * i + 1].index = 2;
			x_space[3 * i + 1].value = q->y;
			x_space[3 * i + 2].index = -1;
			prob.x[i] = &x_space[3 * i];
			prob.y[i] = q->value;
		}

		// build model & classify
	 model = svm_train(&prob, &param);
	
		x[0].index = 1;
		x[1].index = 2;
		x[2].index = -1;

		for (i = 0; i < XLEN; i++)
			for (j = 0; j < YLEN; j++) 
			{
				x[0].value = (double) i / XLEN;
				x[1].value = (double) j / YLEN;
				double d = svm_predict(model, x);
				if (param.svm_type == ONE_CLASS && d<0) d=2;
				SetPixel(window_dc, i, j, colors[(int)d]);
				SetPixel(buffer_dc, i, j, colors[(int)d]);
			}


	draw_all_points();
	


}

void CClassifierDlg::OnMale() 
{
	// TODO: Add your control notification handler code here
	CFileDialog   dlg(TRUE,   NULL,   NULL,   OFN_FILEMUSTEXIST|   OFN_HIDEREADONLY,     
		"TXT文件 (*.txt)|*.txt||", this);   
	
	if(dlg.DoModal()!=IDOK)   
		return;   
      m_strMaleFileName =   dlg.GetPathName();
	((CClassifierDlg *)pMainWnd)->GetDlgItem(IDC_EDITMALE)->SetWindowText(m_strMaleFileName);
    

}

void CClassifierDlg::OnFemale() 
{
	// TODO: Add your control notification handler code here
		CFileDialog   dlg(TRUE,   NULL,   NULL,   OFN_FILEMUSTEXIST|   OFN_HIDEREADONLY,     
		"TXT文件 (*.txt)|*.txt||", this);   
	
	if(dlg.DoModal()!=IDOK)   
		return;   
	
    m_strFemaleFileName  =   dlg.GetPathName();
	((CClassifierDlg *)pMainWnd)->GetDlgItem(IDC_EDITFEMALE)->SetWindowText( m_strFemaleFileName);
	
}

void CClassifierDlg::draw_point(const point &p)
{
	RECT rect;
    rect.left = int(p.x*XLEN);
	rect.top = int(p.y*YLEN);
	rect.right = int(p.x*XLEN) + 3;
	rect.bottom = int(p.y*YLEN) + 3;
	FillRect(window_dc, &rect, choose_brush(p.value));
	FillRect(buffer_dc, &rect, choose_brush(p.value));



}

void CClassifierDlg::draw_all_points()
{
	for(list<point>::iterator p = point_list.begin(); p != point_list.end(); p++)
		draw_point(*p);

}

HBRUSH CClassifierDlg::choose_brush(int v)
{
	if(v==1) return brush1;
	else if(v==-1) return brush2;
	else return brush3;

}

void CClassifierDlg::OnLoadtext() 
{
	// TODO: Add your control notification handler code here
	float height,weight;
	char xingbie;
	int total=0,error=0;
	int v;
	double m,n;
	point p = {m,n,v};
	CFileDialog   dlg(TRUE,   NULL,   NULL,   OFN_FILEMUSTEXIST|   OFN_HIDEREADONLY,     
		"TXT文件 (*.txt)|*.txt||", this);   
	
	if(dlg.DoModal()!=IDOK)   
		return;   
	point_list.clear();
	PatBlt(buffer_dc, 0, 0, XLEN, YLEN, BLACKNESS);
	::InvalidateRect(GetDlgItem(IDC_TESTDRAW)->m_hWnd, 0, 0);
	
	for (int i = 0; i < XLEN; i++)
		for (int j = 0; j < YLEN; j++) 
		{
			x[0].value = (double) i / XLEN;
			x[1].value = (double) j / YLEN;
			double d = svm_predict(model, x);
			if (param.svm_type == ONE_CLASS && d<0) d=2;
			SetPixel(window_dc, i, j, colors[(int)d]);
			SetPixel(buffer_dc, i, j, colors[(int)d]);
		}
		
		m_strTestFileName =   dlg.GetPathName();
		((CClassifierDlg *)pMainWnd)->GetDlgItem(IDC_EDITTEST)->SetWindowText(m_strTestFileName);
		
		FILE *testFile=fopen(m_strTestFileName,"r"); 
		if (testFile)
		{
			
			while (TRUE)
			{
				//讀身高數據
				if(EOF==fscanf(testFile,"%f",&height))
				{
					
					break;
				}
				p.x=height/HEIGHT_SCALE;
				
				if(EOF==fscanf(testFile,"%f",&weight))
				{
					
					break;
				}
				p.y=weight/WEIGHT_SCALE;
				if(EOF==fscanf(testFile,"%*c%c",&xingbie))
				{
					
					break;
				}
				if ((xingbie=='f')||(xingbie=='F'))
				{
					
					p.value=-1;
				}
				else
				{
					p.value=1;
					
				}
				
				point_list.push_back(p);
				x[0].value =p.x;
				x[1].value=p.y;
				double d = svm_predict(model, x);
				if ((int)d==p.value)
				{
				}
				else
					error++;
			total++;
				
			}
			draw_all_points();
			CString str;
			str.Format("%f%%",100.0-100*((float)error)/((float)total));
			MessageBox(str);
			
			fclose(testFile);
			
		}
		if(point_list.empty()) return;

	}



void CClassifierDlg::OnDestroy() 
{
	CDialog::OnDestroy();
	
	// TODO: Add your message handler code here

		delete[] x_space;
		delete[] prob.x;
		delete[] prob.y;
	svm_destroy_model(model);
	free(param.weight_label);
	free(param.weight);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲激情五月婷婷| 亚洲自拍偷拍网站| 久久综合色综合88| xf在线a精品一区二区视频网站| 日韩欧美国产小视频| www.视频一区| 97久久精品人人做人人爽50路| 国产精品 日产精品 欧美精品| 成人小视频在线| 在线欧美日韩国产| 日韩免费视频线观看| 中文欧美字幕免费| 午夜精品免费在线| 国产高清在线精品| 在线免费观看不卡av| 欧美日本在线一区| 日韩欧美高清dvd碟片| 欧美色男人天堂| 久久午夜电影网| 91精品国产综合久久精品app| 久久综合中文字幕| 夜夜精品浪潮av一区二区三区| 中文字幕乱码久久午夜不卡 | 91久久精品网| 男女男精品视频网| 欧美xxxx老人做受| 欧美视频在线一区二区三区| 国产精品一区免费在线观看| 亚洲国产综合色| 日本午夜一本久久久综合| 美女视频一区二区三区| 久久国产麻豆精品| 成人午夜免费电影| 97精品视频在线观看自产线路二| 色哟哟国产精品| 91麻豆精品国产| 久久欧美中文字幕| 国产精品免费看片| 亚洲3atv精品一区二区三区| 日本成人在线不卡视频| 国产成人精品1024| 精品视频在线免费| 欧美经典三级视频一区二区三区| 一二三区精品福利视频| 麻豆久久久久久久| 99久久精品免费看国产| 7777精品伊人久久久大香线蕉完整版 | 亚洲欧洲日韩av| 亚洲一区二区av在线| 老鸭窝一区二区久久精品| jlzzjlzz国产精品久久| 欧美一区二区在线视频| 日本一区二区动态图| 日韩精品欧美精品| eeuss国产一区二区三区| 91精品国产一区二区| 一区二区中文视频| 看电视剧不卡顿的网站| 在线精品视频一区二区三四 | 成人午夜精品在线| 欧美三级电影网站| 国产精品久久久久久久岛一牛影视| 性欧美大战久久久久久久久| 国产mv日韩mv欧美| 日韩视频免费观看高清在线视频| 中文字幕在线一区免费| 精品无人码麻豆乱码1区2区 | 精品日韩99亚洲| 亚洲精品国产一区二区精华液| 国产一区二区三区四区在线观看| 欧美性大战xxxxx久久久| 中文字幕不卡一区| 久久国产精品99久久人人澡| 欧美写真视频网站| 国产精品区一区二区三| 精一区二区三区| 3d动漫精品啪啪| 亚洲综合色婷婷| 91美女视频网站| 国产欧美一区二区三区在线老狼 | 91美女视频网站| 中文字幕不卡三区| 国产精品一区二区无线| 日韩亚洲欧美一区二区三区| 亚洲国产综合色| 色成人在线视频| 亚洲视频香蕉人妖| gogo大胆日本视频一区| 欧美国产日本视频| 国产传媒久久文化传媒| 久久久精品免费网站| 狠狠色综合播放一区二区| 日韩免费在线观看| 免费在线成人网| 欧美美女激情18p| 亚洲精品久久嫩草网站秘色| 国产成人免费视频一区| 久久精品欧美一区二区三区麻豆| 三级欧美在线一区| 欧美三级日本三级少妇99| 中文字幕中文字幕一区二区 | 成人毛片在线观看| 精品成人免费观看| 老鸭窝一区二区久久精品| 欧美乱妇15p| 国产精品久久久久久户外露出| 国产精品资源网站| 精品国产一区a| 久久国产剧场电影| 精品日韩av一区二区| 美国十次综合导航| 精品久久久久久久久久久久久久久| 日韩综合小视频| 777午夜精品视频在线播放| 亚洲国产精品影院| 欧美日本韩国一区| 日韩经典中文字幕一区| 欧美一区二区三区视频在线| 日韩av电影免费观看高清完整版| 欧美日韩在线播放一区| 一区二区三区在线视频播放| 日本高清视频一区二区| 一区二区国产盗摄色噜噜| 欧美日韩综合在线免费观看| 午夜欧美在线一二页| 欧美精品aⅴ在线视频| 日本亚洲天堂网| 精品国精品国产| 国产乱子轮精品视频| 国产精品国产a级| 一本色道久久综合精品竹菊| 亚洲综合色丁香婷婷六月图片| 欧美自拍偷拍午夜视频| 日韩中文字幕91| 欧美人妇做爰xxxⅹ性高电影| 久久精品国产999大香线蕉| 精品国产1区2区3区| 国产99一区视频免费| 亚洲视频免费看| 欧美日韩精品二区第二页| 日韩激情一二三区| 亚洲精品一区二区三区福利| 国产老妇另类xxxxx| 国产精品女主播在线观看| 97精品久久久久中文字幕 | 久色婷婷小香蕉久久| 国产欧美一区二区三区沐欲| 亚洲女同女同女同女同女同69| 精品成人私密视频| 国产精品乱码人人做人人爱| 在线综合+亚洲+欧美中文字幕| 在线一区二区三区做爰视频网站| 国产精品18久久久久| 欧美日本在线观看| 免费黄网站欧美| 亚洲va韩国va欧美va精品| 欧美乱妇23p| 国产在线国偷精品免费看| 夜色激情一区二区| 日韩欧美在线网站| 波波电影院一区二区三区| 国产精品灌醉下药二区| 91精品国产色综合久久不卡蜜臀| 一区二区欧美国产| 国产网站一区二区三区| 在线看日本不卡| 国产91精品一区二区麻豆亚洲| 一区二区三区四区国产精品| 精品日产卡一卡二卡麻豆| 国产v综合v亚洲欧| 久久国内精品自在自线400部| 国产精品久久国产精麻豆99网站| 这里是久久伊人| 波多野结衣一区二区三区| 日本午夜精品一区二区三区电影| 亚洲色图清纯唯美| 久久综合九色综合欧美亚洲| 91久久一区二区| 国产伦精品一区二区三区免费迷| 天天av天天翘天天综合网色鬼国产| 欧美激情在线免费观看| 欧美一区二区精品| 在线观看免费视频综合| 国产精品123区| 激情深爱一区二区| 亚洲自拍偷拍网站| 久久久噜噜噜久久人人看| 精品污污网站免费看| 在线这里只有精品| 不卡av在线免费观看| 极品美女销魂一区二区三区| 婷婷中文字幕一区三区| 国产精品水嫩水嫩| xfplay精品久久| 日韩欧美一级二级三级久久久| 欧美亚一区二区| 国产传媒一区在线| 国产成人在线视频网址| 看国产成人h片视频| 视频一区二区三区在线|