-
Notifications
You must be signed in to change notification settings - Fork 0
/
KNNPredictor.cs
55 lines (50 loc) · 1.65 KB
/
KNNPredictor.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
using weka.classifiers;
using weka.core;
namespace SalaryPredictor
{
public class KNNPredictor
{
private Classifier cl;
private Instances header;
public KNNPredictor()
{
init();
}
/// <summary>
/// 初始化分类器
/// </summary>
private void init()
{
object[] arr = SerializationHelper.readAll("Resources/ibk.save");
cl = (Classifier)arr[0];
header = (Instances)arr[1];
}
/// <summary>
/// 预测薪资
/// </summary>
/// <param name="jobScore">职位得分</param>
/// <param name="schoolScore">学校得分</param>
/// <param name="degreeScore">学历得分</param>
/// <param name="addrScore">地区得分</param>
/// <param name="year">工作年限</param>
/// <returns>预估薪资</returns>
public double predicate(double jobScore, double schoolScore, double degreeScore, double addrScore, double year)
{
Instance inst = new DenseInstance(header.numAttributes());
inst.setDataset(header);
// 职位得分
inst.setValue(0, jobScore);
// 学校得分
inst.setValue(1, schoolScore);
// 学历得分
inst.setValue(2, degreeScore);
// 地区得分
inst.setValue(3, addrScore);
// 工作年限
inst.setValue(4, year);
// 薪资(待预测)
inst.setValue(5, 0);
return cl.classifyInstance(inst);
}
}
}