Find-S:寻找极大特殊假设_Java实现
算法描述:
算法说明:该算法是概念空间挖掘最简单的算法,只考虑了正实例,不断做泛化,实际上求得了一个最特化边界
算法实现:
import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class FindS { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { int maxTrain = 4; int maxLen = 7; int i = 0; String temp = null; String yes = new String("Yes"); String[][] state = new String[maxTrain][maxLen]; String[] concept = new String[maxLen]; FileReader fr = new FileReader("e:\\workspace\\train.txt"); BufferedReader br = new BufferedReader(fr); while((temp = br.readLine()) != null && i < 4){ state[i] = temp.split(" "); i++; } for(int j = 1; j < maxLen; j++){ concept[j] = state[0][j]; } for(i = 1; i < maxTrain; i++){ if(state[i][maxLen-1].equals(yes)){ for(int k = 1; k < maxLen-1; k++){ if(!state[i][k].equals(concept[k])){ concept[k] = "?"; } } } } System.out.print("The concept is : "); for(i = 1; i < maxLen - 1; i++){ System.out.print(concept[i] + " "); } br.close(); return; } }
预测数据: 1 Sunny Warm Normal Strong Warm Yes 2 Sunny Warm High Strong Warm Yes 3 Rainy Cold High Strong Warm No 4 Sunny Warm High Strong Cool Yes
运行结果:
The concept is : Sunny Warm High Strong ?