Lampiran 1. Data Latih Manual
Data
Ke
Te-nor
DP
Gen-der
Status
Perkawinan
Pendidikan
Terakhir
Tang-gungan
Kepe-milikan
Rumah
Lama
Tinggal
Pekerjaan
Peng-hasilan
Lama
Pekerjaan
Lis-trik
Re-mark
1
12
16-20%
P
Kawin
Sarjana
2
Milik
Sendiri
7
Peg. Swasta
Formal
5000000
1
900
Good
2
24
21-25%
L
Single
SMTA/
Sederajat
0
Milik
Keluarga
23
Peg. Swasta
Formal
2800000
3
450
Good
3
24
21-25%
L
Kawin
SMTA/
Sederajat
2
Milik
Sendiri
15
Wiraswasta
Non Formal
22500000
6
900
Good
4
36
16-20%
P
Duda/Janda
tanpa Anak
Dibawah
SMTP
0
Milik
Keluarga
40
Peg. Swasta
Formal
2700000
2
450
Good
5
36
21-25%
L
Kawin
SMTP/
Sederajat
3
Milik
Sendiri
15
Peg. Swasta
Formal
2200000
2
900
Good
6
36
16-20%
P
Kawin
Diploma
1
Milik
Keluarga
29
Peg. Swasta
Formal
1950000
5
1300 Good
7
24
36-40%
L
Kawin
SMTA/
Sederajat
2
Milik
Keluarga
28
Peg. Swasta
Formal
4000000
7
900
Good
8
35
21-25%
L
Kawin
Dibawah
SMTP
2
Milik
Sendiri
22
Wiraswasta
Non Formal
7000000
15
450
Bad
9
33
16-20%
L
Kawin
SMTA/
Sederajat
2
Milik
Keluarga
8
Wiraswasta
Non Formal
4000000
5
900
Bad
10
33
26-30%
L
Kawin
Dibawah
SMTP
2
Milik
Keluarga
10
Wiraswasta
Non Formal
3000000
20
900
Bad
11
11
16-20%
L
Kawin
Dibawah
SMTP
3
Milik
Sendiri
36
Peg. Swasta
Non Formal
4000000
7
450
Bad
12
23
16-20%
L
Kawin
Dibawah
SMTP
2
Milik
Keluarga
25
Wiraswasta
Data
Ke
Te-nor
DP
Gen-der
Status
Perkawinan
Pendidikan
Terakhir
Tang-gungan
Kepe-milikan
Rumah
Lama
Tinggal
Pekerjaan
Peng-hasilan
Lama
Pekerjaan
Lis-trik
Re-mark
13
33
16-20%
P
Kawin
Sarjana
1
Milik
Keluarga
30
Peg. Swasta
Formal
1000000
6
900
Bad
14
23
36-40%
L
Kawin
Dibawah
SMTP
6
Milik
Sendiri
27
Wiraswasta
Non Formal
3300000
40
450
Bad
Data Uji Manual
Data
Ke
Te-nor
DP
Gen-der
Status
Perkawinan
Pendidikan
Terakhir
Tang-gungan
Kepe-milikan
Rumah
Lama
Tinggal
Pekerjaan
Peng-hasilan
Lama
Pekerjaan
Lis-trik
Re-mark
1
36
>40%
L
Kawin
SMTA/
Sederajat
3
Milik
Sendiri
4
Peg. Swasta
Formal
2500000
3
900
Good
Lampiran 2. Konversi Data Latih
Data
Ke
Tenor
DP
Gen-der
Status
Perkawinan
Pendidikan
Terakhir
Tang-gungan
Kepemilikan
Rumah
Lama
Tinggal
Peker-jaan
Peng-hasilan
Lama
Pekerjaan
Lis-trik
Re-mark
1
1
5
2
2
1
0,666667
1
0,8
2
1
1
2
1
2
1
6
1
1
3
1
2
0,866667
2
0,371429
1
1
1
3
1
6
1
2
3
0,666667
1
0,333333
5
1
0,9
2
1
4
0,5
5
2
4
5
1
2
1
2
0,342857
1
1
1
5
0,5
6
1
2
4
0,666667
1
0,333333
2
0,2
1
2
1
6
0,5
5
2
2
2
1
2
1
2
0,128571
1
3
1
7
1
9
1
2
3
0,666667
2
1
2
0,714286
0,8
2
1
8
0,54167
6
1
2
5
0,666667
1
0,8
5
0,4
0,333333
1
2
9
0,625
5
1
2
3
0,666667
2
0,7
5
0,714286
1
2
2
10
0,625
7
1
2
5
0,666667
2
0,5
5
0,428571 0,666667
2
2
11
1
5
1
2
5
0,666667
1
1
3
0,714286
0,8
1
2
12
0,91667
5
1
2
5
0,666667
2
1
5
0,833333 0,666667
1
2
13
0,625
5
2
2
1
1
2
1
2
1
0,9
2
2
14
0,91667
9
1
2
5
1
1
1
5
0,514286
1
1
2
Konversi Data Uji
Data
Ke
Tenor
DP
Gen-der
Status
Perkawinan
Pendidikan
Terakhir
Tang-gungan
Kepemilikan
Rumah
Lama
Tinggal
Peker-jaan
Peng-hasilan
Lama
Pekerjaan
Lis-trik
Re-mark
1
0,5
10
1
2
3
0,666667
1
1
2
0,285714
1
2
1
Lampiran 3. Jarak Data Uji Terhadap Setiap Data Latih
Data
Ke
2 jlx
y
2 1 N jl l
x
y
T
D
G
Sp
Pt
Tg
R
Lt
P
Ph
Lk
Ls
1
0,25
25
1
0
4
0
0
0,04
0
0,51020449
0
0
30,8002
2
0,25
16
0
1
0
0,11111089
1
0,017777689
0
0,007347061
0
1
19,38624
3
0,25
16
0
0
0
0
0
0,444444889
9
0,51020449
0,01
0
26,21465
4
0
25
1
4
4
0,11111089
1
0
0
0,003265322
0
1
36,11438
5
0
16
0
0
1
0
0
0,444444889
0
0,00734689
0
0
17,45179
6
0
25
1
0
1
0,11111089
1
0
0
0,024693922
0
1
29,1358
7
0,25
1
0
0
0
0
1
0
0
0,183673959
0,04
0
2,473674
8
0,00174
16
0
0
4
0
0
0,04
9
0,01306129
0,444444889
1
30,49924
9
0,01563
25
0
0
0
0
1
0,09
9
0,183673959
0
0
35,2893
10
0,01563
9
0
0
4
0
1
0,25
9
0,020408122 0,111110889
0
23,39714
11
0,25
25
0
0
4
0
0
0
1
0,183673959
0,04
1
31,47367
12
0,17361
25
0
0
4
0
1
0
9
0,299886569 0,111110889
1
40,58461
13
0,01563
25
1
0
4
0,11111089
1
0
0
0,51020449
0,01
0
31,64694
14
0,17361
1
0
0
4
0,11111089
0
0
9
0,052245159
0
1
15,33697
Keterangan:
T = Tenor.
D = Uang muka.
G = Jenis kelamin.
Sp = Status perkawinan.
Pt = Pendidikan terakhir.
Tg = Tanggungan.
R = Kepemilikan rumah.
Lt = Lama tinggal.
P = Pekerjaan.
Ph = Penghasilan perbulan.
Lk = Lama bekerja.
Ls = Listrik.
Lampiran 4. Data Latih Program
Data
Ke
Te-nor
DP
Gen-der
Status
Perkawinan
Pendidikan
Terakhir
Tang-gungan
Kepe-milikan
Rumah
Lama
Tinggal
Pekerjaan
Peng-hasilan
Lama
Kerja
Lis-trik
Re-mark
1
35
15-20%
L
Kawin
SMTA/
Sederajat
4
Milik
Sendiri
3
Peg. Swasta
Non Formal
2300000
2
900
Good
2
22
15-20%
L
Kawin
SMTA/
Sederajat
2
Milik
Sendiri
58
Wiraswasta
Non Formal
11000000
30
1300 Good
3
36
20-25%
L
Kawin
SMTP/
Sederajat
3
Milik
Sendiri
40
Wiraswasta
Non Formal
2500000
10
450
Good
4
33
15-20%
L
Kawin
Dibawah
SMTP
2
Milik
Keluarga
8
Wiraswasta
Non Formal
5000000
5
900
Good
5
22
35-40%
L
Single
Diploma
0
Milik
Sendiri
21
Wiraswasta
Non Formal
14500000
5
900
Good
6
33
15-20%
L
Kawin
SMTP/
Sederajat
3
Milik
Keluarga
15
Wiraswasta
Non Formal
6400000
15
900
Good
7
33
15-20%
L
Kawin
SMTP/
Sederajat
4
Milik
Sendiri
30
Wiraswasta
Non Formal
7500000
10
450
Good
8
33
25-30%
L
Kawin
SMTP/
Sederajat
3
Milik
Sendiri
6
Wiraswasta
Non Formal
12000000
12
900
Good
9
27
15-20%
P
Kawin
Sarjana
0
Milik
Keluarga
12
Peg. Swasta
Formal
600000
9
900
Good
10
36
>40%
L
Kawin
SMTA/
Sederajat
2
Milik
Sendiri
20
Wiraswasta
Non Formal
6000000
20
900
Good
11
12
0%
L
Kawin
Diploma
4
Milik
Sendiri
20
Peg. Negeri
6000000
20
1300 Good
12
12
0%
L
Single
SMTA/
Sederajat
0
Milik
Sendiri
22
Wiraswasta
Data
Ke
Te-nor
DP
Gen-der
Status
Perkawinan
Pendidikan
Terakhir
Tang-gungan
Kepe-milikan
Rumah
Lama
Tinggal
Pekerjaan
Peng-hasilan
Lama
Kerja
Lis-trik
Re-mark
13
12
0%
L
Kawin
Sarjana
2
Kontrak/
Sewa
1
Peg. Swasta
Formal
3644229
7
900
Good
14
12
0%
L
Kawin
SMTA/
Sederajat
2
Milik
Sendiri
29
Wiraswasta
Non Formal
8000000
3
450
Good
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
795
48
>40%
L
Kawin
Diploma
3
Milik
Sendiri
5
TNI/Polisi
3438000
9
900
Bad
796
48
>40%
L
Kawin
Tidak
Sekolah
3
Milik
Sendiri
20
Wiraswasta
Non Formal
22500000
3
900
Bad
797
48
35-40%
L
Kawin
Dibawah
SMTP
4
Milik
Sendiri
51
Wiraswasta
Non Formal
35000000
20
900
Bad
798
48
>40%
L
Kawin
SMTP/
Sederajat
4
Milik
Keluarga
15
Wiraswasta
Non Formal
8320000
5
900
Bad
799
48
30-35%
L
Kawin
Sarjana
3
Milik
Keluarga
34
Wiraswasta
Formal
25000000
20
900
Bad
800
48
30-35%
P
Kawin
Diploma
0
Milik
Lampiran 5. Data Uji Program
Data
Ke
Te-nor
DP
Gen-der
Status
Perkawinan
Pendidikan
Terakhir
Tang-gungan
Kepe-milikan
Rumah
Lama
Tinggal
Pekerjaan
Peng-hasilan
Lama
Kerja
Lis-trik
Re-mark
1
48
20-25%
L
Kawin
Dibawah
SMTP
3
Milik
Sendiri
5
Wiraswasta
Non Formal
63750000
7
900
Good
2
20
>40%
L
Kawin
SMTA/
Sederajat
5
Milik
Sendiri
28
Wiraswasta
Formal
40000000
23
1300 Good
3
48
25-30%
L
Kawin
Sarjana
4
Milik
Sendiri
4
Peg. Negeri
4300000
24
1300 Good
4
47
20-25%
L
Kawin
Sarjana
3
Milik
Sendiri
38
Peg. Negeri
3677500
3
900
Good
5
48
35-40%
L
Kawin
Tidak
Sekolah
2
Milik
Sendiri
29
Wiraswasta
Non Formal
22230000
4
900
Good
6
48
35-40%
L
Kawin
SMTA/
Sederajat
2
Milik
Sendiri
37
Wiraswasta
Formal
72800000
5
900
Good
7
36
35-40%
L
Kawin
Sarjana
4
Milik
Sendiri
7
Peg. Negeri
4429800
17
900
Good
8
36
>40%
L
Kawin
SMTA/
Sederajat
3
Kontrak/
Data
Ke
Te-nor
DP
Gen-der
Status
Perkawinan
Pendidikan
Terakhir
Tang-gungan
Kepe-milikan
Rumah
Lama
Tinggal
Pekerjaan
Peng-hasilan
Lama
Kerja
Lis-trik
Re-mark
9
36
25-30%
L
Kawin
SMTP/
Sederajat
2
Milik
Sendiri
30
Wiraswasta
Non Formal
17600000
8
900
Good
10
48
20-25%
L
Kawin
SMTP/
Sederajat
4
Milik
Sendiri
26
Wiraswasta
Formal
60000000
15
900
Good
11
36
30-35%
L
Kawin
Dibawah
SMTP
2
Milik
Sendiri
35
Wiraswasta
Non Formal
3000000
4
450
Good
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
136
12
>40%
L
Single
SMTP/
Sederajat
0
Milik
Keluarga
22
Wiraswasta
Non Formal
10000000
4
900
Good
137
36
15-20%
L
Kawin
Sarjana
3
Milik
Sendiri
30
Peg. Negeri
3500000
7
2200 Good
138
24
20-25%
P
Kawin
Dibawah
SMTP
2
Milik
Sendiri
14
Wiraswasta
Formal
30000000
14
450
Good
139
36
15-20%
L
Kawin
Dibawah
SMTP
3
Milik
Sendiri
25
Wiraswasta
Non Formal
7000000
15
450
Good
140
36
25-30%
L
Single
SMTA/
Sederajat
0
Milik
Keluarga
20
Peg. Swasta
Formal
2500000
5
450
Good
Lampiran 6.
Source Code
Program
#include <conio.h> #include<iostream.h> #include <math.h> #include <stdlib.h> #include<iomanip.h> #include <string.h> #include <fstream.h> void main() { ifstream latih; ifstream uji; ofstream ubahlatih; ofstream ubahuji; ofstream jarakterdekat; ofstream kelasklasifikasi; char datalatih[60]; char datauji[60];char ambillatih[1][14][30]; //ambil data latih
char ambiluji[1][14][30]; //ambil data uji
double konversilatih[800][14]; //hasil konversi data uji
double konversiuji[140][14]; //hasil konversi data latih
int kelasuji[140][1]; //output kelas klasifikasi data uji
int i,j,l,tetangga;
double m,n,o,p,q,r,s,t,u,v,w,x,y;
double tl[3],hl[3],lkl[2],tnl[3],ltl[2],tu[3],hu[3],lku[2],tnu[3],ltu[2];
double z[140][800]; //jarak data uji dg data latih
double jarak[800][2]; //jarak data uji dan calon kelas klasifikasi
double zz,za,nilaig,nilaib,nilai1,nilai2,total,total1,kelas1,kelas2,pgood,persen;
latih.open("datalatih.txt");
ubahlatih.open("konversilatih.txt");
for(i=0;i<800;i++)//proses ambil data latih dr notepad dan konversi data latih
{ for(j=0;j<14;j++) { latih>>datalatih; strcpy(ambillatih[0][j],datalatih); } for(j=0;j<3;j++) {
konversilatih[i][j]=(double)atof(ambillatih[0][j]);
}
konversilatih[i][6]=(double)atof(ambillatih[0][6]);
konversilatih[i][8]=(double)atof(ambillatih[0][8]);
konversilatih[i][10]=(double)atof(ambillatih[0][10]);
konversilatih[i][11]=(double)atof(ambillatih[0][11]);
konversilatih[i][12]=(double)atof(ambillatih[0][12]);
if(konversilatih[i][1]<=12) //konversi tenor
{
tl[0]=1; tl[1]=0; tl[2]=0;
}
else if(konversilatih[i][1]>12 && konversilatih[i][1]<24)
{ tl[0]=(24-konversilatih[i][1])/(24-12); tl[1]=(konversilatih[i][1]-12)/(24-12); tl[2]=0; if(tl[0]<tl[1]) { konversilatih[i][1]=tl[1]; } else { konversilatih[i][1]=tl[0]; } }
else if(konversilatih[i][1]>=24 && konversilatih[i][1]<48)
{ tl[0]=0; tl[1]=(48-konversilatih[i][1])/(48-24); tl[2]=(konversilatih[i][1]-24)/(48-24); if(tl[2]<tl[1]) { konversilatih[i][1]=tl[1]; } else { konversilatih[i][1]=tl[2]; } } else { tl[0]=0; tl[1]=0; tl[2]=1; konversilatih[i][1]=tl[2]; }
if(konversilatih[i][2]==1)//konversi uang muka(DP)
{ konversilatih[i][2]=1; } else if(konversilatih[i][2]==6) { konversilatih[i][2]=2; } else if(konversilatih[i][2]==11) { konversilatih[i][2]=3; } else if(konversilatih[i][2]==16) { konversilatih[i][2]=4; } else if(konversilatih[i][2]==21) {
konversilatih[i][2]=5; } else if(konversilatih[i][2]==26) { konversilatih[i][2]=6; } else if(konversilatih[i][2]==31) { konversilatih[i][2]=7; } else if(konversilatih[i][2]==36) { konversilatih[i][2]=8; } else if(konversilatih[i][2]==41) { konversilatih[i][2]=9; } else { konversilatih[i][2]=10; }
if(strcmp(ambillatih[0][3],"L")==0)//konversi gender
{ konversilatih[i][3]=1; } else { konversilatih[i][3]=2; }
if(strcmp(ambillatih[0][4],"Single")==0)//konversi status perkawinan
{
konversilatih[i][4]=1; }
else if(strcmp(ambillatih[0][4],"Kawin")==0)
{
konversilatih[i][4]=2; }
else if(strcmp(ambillatih[0][4],"Duda/Janda_dgn_Anak")==0)
{ konversilatih[i][4]=3; } else { konversilatih[i][4]=4; }
if(strcmp(ambillatih[0][5],"SARJANA")==0)//konversi pendidikan terakhir
{
konversilatih[i][5]=1; }
else if(strcmp(ambillatih[0][5],"DIPLOMA")==0)
{
konversilatih[i][5]=2; }
{
konversilatih[i][5]=3; }
else if(strcmp(ambillatih[0][5],"SMTP/SEDERAJAT")==0)
{
konversilatih[i][5]=4; }
else if(strcmp(ambillatih[0][5],"DIBAWAH_SMTP")==0)
{ konversilatih[i][5]=5; } else { konversilatih[i][5]=6; }
if(konversilatih[i][6]<1)//konversi jumlah tanggungan
{ tnl[0]=1; tnl[1]=0; tnl[3]=0; konversilatih[i][6]=tnl[0]; }
else if(konversilatih[i][6]>1 && konversilatih[i][6]<4)
{ tnl[0]=(4-konversilatih[i][6])/(4-1); tnl[1]=(konversilatih[i][6]-1)/(4-1); tnl[2]=0; if(tnl[0]<tnl[1]) { konversilatih[i][6]=tnl[1]; } else { konversilatih[i][6]=tnl[0]; } }
else if(konversilatih[i][6]>=4 && konversilatih[i][6]<6)
{ tnl[0]=0; tnl[1]=(6-konversilatih[i][6])/(6-4); if(konversilatih[i][6]==4) { tnl[2]=0; } else { tnl[2]=(konversilatih[i][6]-4)/(6-4); } if(tnl[1]<tnl[2]) { konversilatih[i][6]=tnl[2]; } else { konversilatih[i][6]=tnl[1];
} } else { tnl[0]=0; tnl[1]=0; tnl[2]=1; konversilatih[i][6]=tnl[2]; }
if(strcmp(ambillatih[0][7],"MILIK_SENDIRI")==0)//konversi tempat tinggal
{
konversilatih[i][7]=1; }
else if(strcmp(ambillatih[0][7],"MILIK_KELUARGA")==0)
{
konversilatih[i][7]=2; }
else if(strcmp(ambillatih[0][7],"RUMAH_DINAS")==0)
{ konversilatih[i][7]=3; } else { konversilatih[i][7]=4; }
if(konversilatih[i][8]<=5)//konversi lama tinggal
{
ltl[0]=1; ltl[1]=0;
konversilatih[i][8]=ltl[0]; }
else if(konversilatih[i][8]>5 && konversilatih[i][8]<15)
{ ltl[0]=(15-konversilatih[i][8])/(15-5); if(konversilatih[i][8]<=10) { ltl[1]=0; } else { ltl[1]=(konversilatih[i][8]-10)/(25-10); } if(ltl[0]<ltl[1]) { konversilatih[i][8]=ltl[1]; } else { konversilatih[i][8]=ltl[0]; } }
else if(konversilatih[i][8]>=15 && konversilatih[i][8]<25)
{
ltl[0]=0;
konversilatih[i][8]=ltl[1]; } else { ltl[0]=0; ltl[1]=1; konversilatih[i][8]=ltl[1]; }
if(strcmp(ambillatih[0][9],"PEG.NEGERI")==0) //konversi pekerjaan
{
konversilatih[i][9]=1; }
else if(strcmp(ambillatih[0][9],"PEG.SWASTA_FORMAL")==0)
{
konversilatih[i][9]=2; }
else if(strcmp(ambillatih[0][9],"PEG.SWASTA_NON_FORMAL")==0)
{
konversilatih[i][9]=3; }
else if(strcmp(ambillatih[0][9],"WIRASWASTA_FORMAL")==0)
{
konversilatih[i][9]=4; }
else if(strcmp(ambillatih[0][9],"WIRASWASTA_NON_FORMAL")==0)
{ konversilatih[i][9]=5; } else { konversilatih[i][9]=6; }
if(konversilatih[i][10]<=1000000)//konversi penghasilan perbulan
{ hl[0]=1; hl[1]=0; hl[2]=0; konversilatih[i][10]=hl[0]; }
else if(konversilatih[i][10]>1000000 && konversilatih[i][10]<=1500000)
{ hl[0]=(2000000-konversilatih[i][10])/(2000000-1000000); hl[1]=0; hl[2]=0; konversilatih[i][10]=hl[0]; }
else if(konversilatih[i][10]>1500000 && konversilatih[i][10]<2000000)
{ hl[0]=(2000000-konversilatih[i][10])/(2000000-1000000); hl[1]=(konversilatih[i][10]-1500000)/(5000000-1500000); hl[2]=0; if(hl[0]<hl[1]) { konversilatih[i][10]=hl[1]; }
else
{
konversilatih[i][10]=hl[0]; }
}
else if(konversilatih[i][10]>=2000000 && konversilatih[i][10]<5000000)
{ hl[0]=0; hl[1]=(konversilatih[i][10]-1500000)/(5000000-1500000); hl[2]=0; konversilatih[i][10]=hl[1]; }
else if(konversilatih[i][10]>=5000000 && konversilatih[i][10]<8000000)
{ hl[0]=0; hl[1]=(8000000-konversilatih[i][10])/(8000000-5000000); if(konversilatih[i][10]==5000000) { hl[2]=0; } else { hl[2]=(konversilatih[i][10]-5000000)/(10000000-5000000); } if(hl[2]<hl[1]) { konversilatih[i][10]=hl[1]; } else { konversilatih[i][10]=hl[2]; } }
else if(konversilatih[i][10]>=8000000 && konversilatih[i][10]<10000000)
{ hl[0]=0; hl[1]=0; hl[2]=(konversilatih[i][10]-5000000)/(10000000-5000000); konversilatih[i][10]=hl[2]; } else { hl[0]=0; hl[1]=0; hl[2]=1; konversilatih[i][10]=hl[2]; }
if(konversilatih[i][11]<=5) //konversi lama tingkat kerja
{
lkl[0]=1; lkl[1]=0;
konversilatih[i][11]=lkl[0]; }
else if(konversilatih[i][11]>5 && konversilatih[i][11]<15)
lkl[0]=(15-konversilatih[i][11])/(15-5); if(konversilatih[i][11]<=10) { lkl[1]=0; } else { lkl[1]=(konversilatih[i][11]-10)/(25-10); } if(lkl[0]<lkl[1]) { konversilatih[i][11]=lkl[1]; } else { konversilatih[i][11]=lkl[0]; } }
else if(konversilatih[i][11]>=15 && konversilatih[i][11]<25)
{ lkl[0]=0; lkl[1]=(konversilatih[i][11]-10)/(25-10); konversilatih[i][11]=lkl[1]; } else { lkl[0]=0; lkl[1]=1; konversilatih[i][11]=lkl[1]; }
if(konversilatih[i][12]==450)//konversi listrik
{ konversilatih[i][12]=1; } else if(konversilatih[i][12]==900) { konversilatih[i][12]=2; } else if(konversilatih[i][12]==1300) { konversilatih[i][12]=3; } else if(konversilatih[i][12]==2200) { konversilatih[i][12]=4; } else { konversilatih[i][12]=5; }
if(strcmp(ambillatih[0][13],"Good")==0) //konversi remark(kelas)
{
konversilatih[i][13]=1; }
{
konversilatih[i][13]=2; }
}
latih.close();
for(i=0;i<800;i++)//output konversi data latih
{ for(j=0;j<14;j++) { ubahlatih<<setw(14)<<konversilatih[i][j]; } ubahlatih<<endl; } ubahlatih.close(); uji.open("datauji.txt");
ubahuji.open("konversiuji.txt");//ambil data uji dr notepad
for(i=0;i<140;i++)
{ for(j=0;j<14;j++) { uji>>datauji; strcpy(ambiluji[0][j],datauji); } for(j=0;j<3;j++) {
konversiuji[i][j]=(double)atof(ambiluji[0][j]);
}
konversiuji[i][6]=(double)atof(ambiluji[0][6]);
konversiuji[i][8]=(double)atof(ambiluji[0][8]);
konversiuji[i][10]=(double)atof(ambiluji[0][10]);
konversiuji[i][11]=(double)atof(ambiluji[0][11]);
konversiuji[i][12]=(double)atof(ambiluji[0][12]);
if(konversiuji[i][1]<=12) //konversi tenor
{ tu[0]=1; tu[1]=0; tu[2]=0; konversiuji[i][1]=tu[0]; }
else if(konversiuji[i][1]>12 && konversiuji[i][1]<24)
{ tu[0]=(24-konversiuji[i][1])/(24-12); tu[1]=(konversiuji[i][1]-12)/(24-12); tu[2]=0; if(tu[0]<tu[1]) { konversiuji[i][1]=tu[1]; } else { konversiuji[i][1]=tu[0]; } }
{ tu[0]=0; tu[1]=(48-konversiuji[i][1])/(48-24); tu[2]=(konversiuji[i][1]-24)/(48-24); if(tu[2]<tu[1]) { konversiuji[i][1]=tu[1]; } else { konversiuji[i][1]=tu[2]; } } else { tu[0]=0; tu[1]=0; tu[2]=1; konversiuji[i][1]=tu[2]; }
if(konversiuji[i][2]==1)//konversi uang muka(DP)
{ konversiuji[i][2]=1; } else if(konversiuji[i][2]==6) { konversiuji[i][2]=2; } else if(konversiuji[i][2]==11) { konversiuji[i][2]=3; } else if(konversiuji[i][2]==16) { konversiuji[i][2]=4; } else if(konversiuji[i][2]==21) { konversiuji[i][2]=5; } else if(konversiuji[i][2]==26) { konversiuji[i][2]=6; } else if(konversiuji[i][2]==31) { konversiuji[i][2]=7; } else if(konversiuji[i][2]==36) { konversiuji[i][2]=8; } else if(konversiuji[i][2]==41) { konversiuji[i][2]=9;
} else
{
konversiuji[i][2]=10; }
if(strcmp(ambiluji[0][3],"L")==0)//konversi gender
{ konversiuji[i][3]=1; } else { konversiuji[i][3]=2; }
if(strcmp(ambiluji[0][4],"Single")==0)//konversi status perkawinan
{
konversiuji[i][4]=1; }
else if(strcmp(ambiluji[0][4],"Kawin")==0)
{
konversiuji[i][4]=2; }
else if(strcmp(ambiluji[0][4],"Duda/Janda_dgn_Anak")==0)
{ konversiuji[i][4]=3; } else { konversiuji[i][4]=4; }
if(strcmp(ambiluji[0][5],"SARJANA")==0)//konversi pendidikan terakhir
{
konversiuji[i][5]=1; }
else if(strcmp(ambiluji[0][5],"DIPLOMA")==0)
{
konversiuji[i][5]=2; }
else if(strcmp(ambiluji[0][5],"SMTA/SEDERAJAT")==0)
{
konversiuji[i][5]=3; }
else if(strcmp(ambiluji[0][5],"SMTP/SEDERAJAT")==0)
{
konversiuji[i][5]=4; }
else if(strcmp(ambiluji[0][5],"DIBAWAH_SMTP")==0)
{ konversiuji[i][5]=5; } else { konversiuji[i][5]=6; }
if(konversiuji[i][6]<1)//konversi jumlah tanggungan
tnu[0]=1; tnu[1]=0; tnu[3]=0;
konversiuji[i][6]=tnu[0]; }
else if(konversiuji[i][6]>1 && konversiuji[i][6]<4)
{ tnu[0]=(4-konversiuji[i][6])/(4-1); tnu[1]=(konversiuji[i][6]-1)/(4-1); tnu[2]=0; if(tnu[0]<tnu[1]) { konversiuji[i][6]=tnu[1]; } else { konversiuji[i][6]=tnu[0]; } }
else if(konversiuji[i][6]>=4 && konversiuji[i][6]<6)
{ tnu[0]=0; tnu[1]=(6-konversiuji[i][6])/(6-4); if(konversiuji[i][6]==4) { tnu[2]=0; } else { tnu[2]=(konversiuji[i][6]-4)/(6-4); } if(tnu[1]<tnu[2]) { konversiuji[i][6]=tnu[2]; } else { konversiuji[i][6]=tnu[1]; } } else { tnu[0]=0; tnu[1]=0; tnu[2]=1; konversiuji[i][6]=tnu[2]; }
if(strcmp(ambiluji[0][7],"MILIK_SENDIRI")==0)//konversi tempat tinggal
{
konversiuji[i][7]=1; }
else if(strcmp(ambiluji[0][7],"MILIK_KELUARGA")==0)
{
konversiuji[i][7]=2; }
else if(strcmp(ambiluji[0][7],"RUMAH_DINAS")==0) { konversiuji[i][7]=3; } else { konversiuji[i][7]=4; }
if(konversiuji[i][8]<=5)//konversi lama tinggal
{
ltu[0]=1; ltu[1]=0;
konversiuji[i][8]=ltu[0]; }
else if(konversiuji[i][8]>5 && konversiuji[i][8]<15)
{ ltu[0]=(15-konversiuji[i][8])/(15-5); if(konversiuji[i][8]<=10) { ltu[1]=0; } else { ltu[1]=(konversiuji[i][8]-10)/(25-10); } if(ltu[0]<ltu[1]) { konversiuji[i][8]=ltu[1]; } else { konversiuji[i][8]=ltu[0]; } }
else if(konversiuji[i][8]>=15 && konversiuji[i][8]<25)
{ ltu[0]=0; ltu[1]=(konversiuji[i][8]-10)/(25-10); konversiuji[i][8]=ltu[1]; } else { ltu[0]=0; ltu[1]=1; konversiuji[i][8]=ltu[1]; }
if(strcmp(ambiluji[0][9],"PEG.NEGERI")==0) //konversi pekerjaan
{
konversiuji[i][9]=1; }
else if(strcmp(ambiluji[0][9],"PEG.SWASTA_FORMAL")==0)
{
konversiuji[i][9]=2; }
{
konversiuji[i][9]=3; }
else if(strcmp(ambiluji[0][9],"WIRASWASTA_FORMAL")==0)
{
konversiuji[i][9]=4; }
else if(strcmp(ambiluji[0][9],"WIRASWASTA_NON_FORMAL")==0)
{ konversiuji[i][9]=5; } else { konversiuji[i][9]=6; }
if(konversiuji[i][10]<=1000000)//konversi penghasilan perbulan
{ hu[0]=1; hu[1]=0; hu[2]=0; konversiuji[i][10]=hu[0]; }
else if(konversiuji[i][10]>1000000 && konversiuji[i][10]<=1500000)
{ hu[0]=(2000000-konversiuji[i][10])/(2000000-1000000); hu[1]=0; hu[2]=0; konversiuji[i][10]=hu[0]; }
else if(konversiuji[i][10]>1500000 && konversiuji[i][10]<2000000)
{ hu[0]=(2000000-konversiuji[i][10])/(2000000-1000000); hu[1]=(konversiuji[i][10]-1500000)/(5000000-1500000); hu[2]=0; if(hu[0]<hu[1]) { konversiuji[i][10]=hu[1]; } else { konversiuji[i][10]=hu[0]; } }
else if(konversiuji[i][10]>=2000000 && konversiuji[i][10]<5000000)
{ hu[0]=0; hu[1]=(konversiuji[i][10]-1500000)/(5000000-1500000); hu[2]=0; konversiuji[i][10]=hu[1]; }
else if(konversiuji[i][10]>=5000000 && konversiuji[i][10]<8000000)
{
hu[0]=0;
hu[1]=(8000000-konversiuji[i][10])/(8000000-5000000); if(konversiuji[i][10]==5000000)
{ hu[2]=0; } else { hu[2]=(konversiuji[i][10]-5000000)/(10000000-5000000); } if(hu[2]<hu[1]) { konversiuji[i][10]=hu[1]; } else { konversiuji[i][10]=hu[2]; } }
else if(konversiuji[i][10]>=8000000 && konversiuji[i][10]<10000000)
{ hu[0]=0; hu[1]=0; hu[2]=(konversiuji[i][10]-5000000)/(10000000-5000000); konversiuji[i][10]=hu[2]; } else { hu[0]=0; hu[1]=0; hu[2]=1; konversiuji[i][10]=hu[2]; }
if(konversiuji[i][11]<=5) //konversi lama tingkat kerja
{
lku[0]=1; lku[1]=0;
konversiuji[i][11]=lku[0]; }
else if(konversiuji[i][11]>5 && konversiuji[i][11]<15)
{ lku[0]=(15-konversiuji[i][11])/(15-5); if(konversiuji[i][11]<=10) { lku[1]=0; } else { lku[1]=(konversiuji[i][11]-10)/(25-10); } if(lku[0]<lku[1]) { konversiuji[i][11]=lku[1]; } else { konversiuji[i][11]=lku[0]; }
}
else if(konversiuji[i][11]>=15 && konversiuji[i][11]<25)
{ lku[0]=0; lku[1]=(konversiuji[i][11]-10)/(25-10); konversiuji[i][11]=lku[1]; } else { lku[0]=0; lku[1]=1; konversiuji[i][11]=lku[1]; }
if(konversiuji[i][12]==450)//konversi listrik
{ konversiuji[i][12]=1; } else if(konversiuji[i][12]==900) { konversiuji[i][12]=2; } else if(konversiuji[i][12]==1300) { konversiuji[i][12]=3; } else if(konversiuji[i][12]==2200) { konversiuji[i][12]=4; } else { konversiuji[i][12]=5; }
if(strcmp(ambiluji[0][13],"Good")==0) //konversi remark(kelas)
{
konversiuji[i][13]=1; }
else if(strcmp(ambiluji[0][13],"Bad")==0)
{
konversiuji[i][13]=2; }
}
uji.close();
for(i=0;i<800;i++)//output konversi data uji
{ for(j=0;j<14;j++) { ubahuji<<setw(14)<<konversiuji[i][j]; } ubahuji<<endl; } ubahuji.close(); cout<<endl;
cout<<"Masukkan jumlah tetangga terdekat(K) yang diinginkan ";//input jarak terdekat cin>>tetangga;
cout<<endl; while(tetangga<1) {
cout<<"Jumlah tetangga terdekat(K) tidak boleh kurang dari 1"<<endl; cout<<"Masukkan jumlah tetangga terdekat(K) yang diinginkan "; cin>>tetangga;
}
cout<<"Data latih yg memiliki jarak terdekat sesuai K adalah"<<endl; jarakterdekat.open("jarakterdekat.txt");
for(i=0;i<140;i++)//proses penghitungan jarak tiap data uji ke tiap data latih
{ for(j=0;j<800;j++) { m=pow(fabs(konversiuji[i][1]-konversilatih[j][1]),2); n=pow(fabs(konversiuji[i][2]-konversilatih[j][2]),2); o=pow(fabs(konversiuji[i][3]-konversilatih[j][3]),2); p=pow(fabs(konversiuji[i][4]-konversilatih[j][4]),2); q=pow(fabs(konversiuji[i][5]-konversilatih[j][5]),2); r=pow(fabs(konversiuji[i][6]-konversilatih[j][6]),2); s=pow(fabs(konversiuji[i][7]-konversilatih[j][7]),2); t=pow(fabs(konversiuji[i][8]-konversilatih[j][8]),2); u=pow(fabs(konversiuji[i][9]-konversilatih[j][9]),2); v=pow(fabs(konversiuji[i][10]-konversilatih[j][10]),2); w=pow(fabs(konversiuji[i][11]-konversilatih[j][11]),2); x=pow(fabs(konversiuji[i][12]-konversilatih[j][12]),2); y=m+n+o+p+q+r+s+t+u+v+w+x; z[i][j]=pow(y,0.5); jarak[j][0]=z[i][j]; jarak[j][1]=konversilatih[j][13]; } for(l=0;l<800;l++) { for(j=0;j<799;j++) { if(jarak[j][0]>jarak[j+1][0]) { zz=jarak[j][0]; jarak[j][0]=jarak[j+1][0]; jarak[j+1][0]=zz; za=jarak[j][1]; jarak[j][1]=jarak[j+1][1]; jarak[j+1][1]=za; } } }
jarakterdekat<<"jarak terdekat dengan data uji ke-"<<i+1<<endl; cout<<"jarak terdekat dengan data uji ke-"<<i+1<<endl;
for(l=0;l<tetangga;l++) //output data uji dg jarak terdekat sejumlah K inputan
{
cout<<jarak[l][1]<<setw(12)<<jarak[l][0]<<endl<<endl; jarakterdekat<<jarak[l][1]<<setw(12)<<jarak[l][0]<<endl; }
nilaig=0; nilaib=0; total1=0;
for(l=0;l<tetangga;l++)//menghitung membership function tiap kelas { if(jarak[l][1]==1) { nilai1=pow(jarak[l][0],(-2)); nilaig=nilaig+nilai1; } else { nilai2=pow(jarak[l][0],(-2)); nilaib=nilaib+nilai2; } total=pow(jarak[l][0],(-2)); total1=total1+total; } kelas1=nilaig/total1; kelas2=nilaib/total1;
if(kelas1>kelas2) //menentukan kelas klasifikasi data uji ke-i
{ kelasuji[i][0]=1; } else { kelasuji[i][0]=2; } } cout<<endl; kelasklasifikasi.open("hasil.txt");
cout<<"data uji "<<setw(6)<<" kelas klasifikasi "<<setw(6)<<" kelas asli"<<endl;
kelasklasifikasi<<"datauji "<<setw(6)<<" kelasklasifikasi "<<setw(6)<<" kelasasli"<<endl; for(i=0;i<140;i++)
{
cout<<setw(6)<<i+1<<setw(15)<<kelasuji[i][0]<<setw(18)<<konversiuji[i][13]<<endl; kelasklasifikasi<<setw(6)<<i+1<<setw(15)<<kelasuji[i][0];
kelasklasifikasi<<setw(18)<<konversiuji[i][13]<<endl; cout<<endl; } kelasklasifikasi.close(); jarakterdekat.close(); cout<<endl; pgood=0;
for(i=0;i<140;i++) {
if(kelasuji[i][0]==konversiuji[i][13])//uji validasi {
pgood=pgood+1;
} }
persen=(pgood/140)*100;
cout<<"Dengan jumlah tetangga terdekat(K)= "<<tetangga<<endl;
cout<<"Presentase keberhasilan klasifikasi sebesar "<<persen<<"%"<<endl<<endl<<endl; getch();