JavaRush /جاوا بلاگ /Random-SD /جاوا ڊولپرز لاءِ مشين لرننگ، حصو 2

جاوا ڊولپرز لاءِ مشين لرننگ، حصو 2

گروپ ۾ شايع ٿيل
جاوا ڊولپرز لاءِ مشين لرننگ، حصو 1
جاوا ڊولپرز لاءِ مشين لرننگ، حصو 2 - 1

مقصد فنڪشن جو اندازو

اچو ته ياد رکون ته ٽارگيٽ فنڪشن ، جيڪو پڻ اڳڪٿي فنڪشن جي نالي سان سڃاتو وڃي ٿو، تياري يا تربيتي عمل جو نتيجو آهي. رياضياتي طور تي، چيلنج هڪ فنڪشن ڳولڻ آهي جيڪو هڪ متغير کي ان پٽ جي طور تي وٺي ٿو х۽ پيش ڪيل قدر واپس ڪري ٿو у.
جاوا ڊولپرز لاءِ مشين لرننگ، حصو 2 - 2
مشين لرننگ ۾، هڪ قيمت فنڪشن (J(θ))استعمال ڪيو ويندو آهي غلطي جي قيمت يا "قيمت" کي ڳڻڻ لاءِ ڏنل مقصدي فنڪشن جي.
جاوا ڊولپرز لاءِ مشين لرننگ، حصو 2 - 3
قيمت فنڪشن ڏيکاري ٿو ته ماڊل ٽريننگ ڊيٽا کي ڪيئن چڱي طرح سان ٺهڪي اچي ٿو. مٿي ڏيکاريل مقصدي فنڪشن جي قيمت کي طئي ڪرڻ لاءِ، هر مثال گھر جي چورس غلطي کي ڳڻڻ ضروري آهي (i). уنقص حسابي قدر ۽ گھر جي حقيقي قيمت جي وچ ۾ فاصلو آھي yمثال کان i.
جاوا ڊولپرز لاءِ مشين لرننگ، حصو 2 - 4
مثال طور، گھر جي حقيقي قيمت 1330 = 6,500,000 € جي ايراضي سان . ۽ تربيت يافته مقصدي فنڪشن پاران پيش ڪيل گھر جي قيمت جي وچ ۾ فرق آهي €7,032,478 : فرق (يا غلطي) آهي €532,478 . توھان مٿي ڏنل گراف ۾ ھي فرق پڻ ڏسي سگھو ٿا. فرق (يا غلطي) ڏيکاريو ويو آهي عمودي ڊيش ٿيل ڳاڙهي لائينن لاءِ هر قيمت-ايريا ٽريننگ جوڙو لاءِ. تربيت يافته مقصدي فنڪشن جي قيمت جي حساب سان، توهان کي مثال ۾ هر گھر لاء چورس غلطي کي گڏ ڪرڻ جي ضرورت آهي ۽ مکيه قيمت کي ڳڻڻ جي ضرورت آهي. ننڍي قيمت جي قيمت (J(θ))، اسان جي مقصد جي ڪارڪردگي جي اڳڪٿيون وڌيڪ صحيح هونديون. لسٽنگ 3 ڏيکاري ٿو هڪ سادي جاوا عمل درآمد جي قيمت جي فنڪشن جيڪا ان پٽ طور وٺي ٿي هڪ مقصد فنڪشن، ٽريننگ ڊيٽا جي هڪ فهرست، ۽ انهن سان لاڳاپيل ليبل. اڳڪٿي جي قيمتن کي لوپ ۾ ڳڻيو ويندو ۽ غلطي جو حساب ڪيو ويندو حقيقي قيمت جي قيمت کي گھٽائڻ سان (ليبل مان ورتو ويو). بعد ۾، غلطين جو چورس خلاصو ڪيو ويندو ۽ غلطي جي قيمت حساب ڪئي ويندي. قيمت قسم جي قيمت طور واپس ڪئي ويندي double:

لسٽنگ-3

public static double cost(Function<ltDouble[], Double> targetFunction,
 List<ltDouble[]> dataset,
 List<ltDouble> labels) {
 int m = dataset.size();
 double sumSquaredErrors = 0;

 // рассчет квадрата ошибки («разницы») для каждого тренировочного примера и //добавление его к сумме
 for (int i = 0; i < m; i++) {
 // получаем вектор признаков из текущего примера
 Double[] featureVector = dataset.get(i);
 // предсказываем meaning и вычисляем ошибку базируясь на реальном
 //значении (метка)
 double predicted = targetFunction.apply(featureVector);
 double label = labels.get(i);
 double gap = predicted - label;
 sumSquaredErrors += Math.pow(gap, 2);
 }

 // Вычисляем и возращаем meaning ошибки (чем меньше тем лучше)
 return (1.0 / (2 * m)) * sumSquaredErrors;
}
جاوا بابت پڙهڻ ۾ دلچسپي رکو ٿا؟ جاوا ڊولپر گروپ ۾ شامل ٿيو !

ٽارگيٽ فنڪشن سکڻ

جيتوڻيڪ قيمت فنڪشن ٽارگيٽ فنڪشن ۽ ٿيٽا پيٽرولر جي معيار کي جانچڻ ۾ مدد ڪري ٿي، توهان کي اڃا تائين سڀ کان وڌيڪ مناسب ٿيٽا پيٽرولر ڳولڻ جي ضرورت آهي. توھان ھن لاء استعمال ڪري سگھو ٿا gradient decent algorithm.

گريجوئيٽ نزول

تدريسي نزول قيمت جي ڪم کي گھٽائي ٿو. هن جو مطلب اهو آهي ته اهو استعمال ڪيو ويندو آهي ٿيٽا پيٽرولس ڳولڻ لاء جيڪي گهٽ ۾ گهٽ قيمت (J(θ))تي ٻڌل آهن ٽريننگ ڊيٽا. هتي نئين، وڌيڪ مناسب ٿيٽا قدرن جي ڳڻپ لاءِ هڪ آسان الگورٿم آهي:
جاوا ڊولپرز لاءِ مشين لرننگ، حصو 2 - 5
تنهن ڪري، ٿيٽا ویکٹر جا پيرا ميٽرز الورورٿم جي هر ورهاڱي سان بهتر ٿيندا. سکيا جي گنجائش α بيان ڪري ٿو حسابن جو تعداد هر ورجائي تي. اهي حساب ڪري سگهجن ٿا جيستائين "سٺو" ٿيٽا قدر مليا وڃن. مثال طور، هيٺ ڏنل لڪير ريگريشن فنڪشن ۾ ٽي ٿيٽا پيٽرولر آهن:
جاوا ڊولپرز لاءِ مشين لرننگ، حصو 2 - 6
هر هڪ ورجائي تي، هڪ نئين قيمت هر هڪ ٿيٽا پيٽرولر لاء حساب ڪيو ويندو: , , ۽ . هر ورهاڱي کان پوءِ، نئين ٿيٽا ویکٹر استعمال ڪندي هڪ نئون، وڌيڪ مناسب عمل ٺاهي سگهجي ٿو 0 , θ 1 , θ 2 } . لسٽنگ -4 ڏيکاري ٿو جاوا ڪوڊ گريڊينٽ ڊيڪي الگورٿم لاءِ. ريگريشن فنڪشن لاءِ ٿيٽا ٽريننگ ڊيٽا، مارڪر ڊيٽا، سکيا جي شرح استعمال ڪندي تربيت ڏني ويندي . نتيجو ٿيٽا پيٽرولر استعمال ڪندي هڪ بهتر مقصد فنڪشن ٿيندو. طريقي کي بار بار سڏيو ويندو، نئين مقصدي فنڪشن ۽ پوئين حسابن مان نئين ٿيٽا پيرا ميٽرز کي پاس ڪندي. ۽ اهي ڪالون ورجائي وينديون جيستائين ترتيب ڏنل مقصدي فنڪشن گهٽ ۾ گهٽ پليٽ تي پهچي وڃي: θ0θ1θ2LinearRegressionFunction(α)train()

لسٽنگ-4

public static LinearRegressionFunction train(LinearRegressionFunction targetFunction,
 List<ltDouble[]> dataset,
 List<ltDouble> labels,
 double alpha) {
 int m = dataset.size();
 double[] thetaVector = targetFunction.getThetas();
 double[] newThetaVector = new double[thetaVector.length];

 // вычисление нового значения тета для каждого element тета массива
 for (int j = 0; j < thetaVector.length; j++) {
 // сумируем разницу ошибки * признак
 double sumErrors = 0;
 for (int i = 0; i < m; i++) {
 Double[] featureVector = dataset.get(i);
 double error = targetFunction.apply(featureVector) - labels.get(i);
 sumErrors += error * featureVector[j];
 }

 //вычисляем новые значения тета
 double gradient = (1.0 / m) * sumErrors;
 newThetaVector[j] = thetaVector[j] - alpha * gradient;
 }

 return new LinearRegressionFunction(newThetaVector);
}
انهي کي يقيني بڻائڻ لاءِ ته لاڳت مسلسل گهٽجي ٿي، توهان J(θ)هر ٽريننگ قدم کان پوءِ قيمت جي فنڪشن کي هلائي سگهو ٿا. هر ورهاڱي کان پوء، قيمت گھٽائڻ گهرجي. جيڪڏهن ائين نه ٿئي، ته ان جو مطلب اهو آهي ته سکيا جي کوٽائي جو قدر تمام وڏو آهي ۽ الورورٿم صرف گهٽ ۾ گهٽ قدر وڃائي ڇڏيو آهي. اهڙي صورت ۾، گريجوئيٽ ڊڪي الگورٿم ناڪام ٿيندو. هيٺ ڏنل پلاٽ نئين، ڳڻيل ٿيٽا پيرا ميٽرز کي استعمال ڪندي مقصدي فنڪشن ڏيکاري ٿو، شروعاتي ٿيٽا ویکٹر سان شروع ٿئي ٿو {1.0, 1.0}. کاٻي ڪالم 50 ورهاڱي کان پوءِ اڳڪٿي واري ڪم جو پلاٽ ڏيکاري ٿو. وچين ڪالمن کان پوء 200 ورجائي؛ ۽ ساڄي ڪالم 1000 ورجائي کان پوءِ. انهن مان اسان اهو ڏسي سگهون ٿا ته قيمت هر ورهاڱي کان پوء گهٽجي ٿي، ۽ نئين مقصدي فنڪشن بهتر ۽ بهتر ٿي. 500-600 ورهاڱي کان پوء، ٿيٽا پيٽرولس هاڻي خاص طور تي تبديل نه ڪندا آهن، ۽ قيمت هڪ مستحڪم پليٽ تي پهچي ٿو. ان کان پوء، ٽارگيٽ فنڪشن جي درستگي هن طريقي سان بهتر نه ٿي سگهي.
جاوا ڊولپرز لاءِ مشين لرننگ، حصو 2 - 7
انهي صورت ۾، جيتوڻيڪ قيمت 500-600 ورهاڱي کان پوء خاص طور تي گهٽ ناهي، مقصد فنڪشن اڃا به بهتر ناهي. هي هڪ تضاد ظاهر ڪري ٿو . مشين لرننگ ۾، اصطلاح "غير مطابقت" استعمال ڪيو ويندو آهي اهو ظاهر ڪرڻ لاءِ ته سکيا وارو الگورتھم ڊيٽا ۾ بنيادي رجحانات نٿو ڳولي. حقيقي زندگي جي تجربي جي بنياد تي، وڏي ملڪيت جي قيمت في چورس ميٽر ۾ گھٽتائي جي اميد رکي ٿي. ان مان اسان اهو نتيجو ڪڍي سگھون ٿا ته ٽارگيٽ فنڪشن لرننگ جي عمل لاءِ استعمال ٿيل ماڊل ڊيٽا کي چڱيءَ طرح سان نه ٿو رکي. تفاوت اڪثر ڪري ماڊل جي oversimplification جي سبب آهي. اهو اسان جي صورت ۾ ٿيو، مقصد فنڪشن تمام سادو آهي، ۽ تجزيو لاء اهو هڪ واحد پيٽرولر استعمال ڪري ٿو - گھر جي ايراضي. پر هي معلومات ڪافي نه آهي صحيح طور تي گهر جي قيمت جي اڳڪٿي ڪرڻ لاء.

خاصيتون شامل ڪرڻ ۽ انھن کي ماپڻ

جيڪڏهن توهان ڳوليندا آهيو ته توهان جو مقصد فنڪشن ان مسئلي سان مطابقت نٿو رکي جنهن کي توهان حل ڪرڻ جي ڪوشش ڪري رهيا آهيو، ان کي ترتيب ڏيڻ جي ضرورت آهي. غير مطابقت کي درست ڪرڻ جو هڪ عام طريقو آهي فيچر ویکٹر ۾ اضافي خاصيتون شامل ڪرڻ. گھر جي قيمت جي مثال ۾، توھان خاصيتون شامل ڪري سگھو ٿا جھڙوڪ ڪمرن جو تعداد يا گھر جي عمر. اھو آھي، ھڪڙي گھر کي بيان ڪرڻ لاء ھڪڙي خاصيت جي قيمت سان ویکٹر استعمال ڪرڻ جي بدران {size}، توھان ڪيترن ئي قدرن سان ویکٹر استعمال ڪري سگھو ٿا، مثال طور، {size, number-of-rooms, age}. ڪجھ ڪيسن ۾، موجود تربيتي ڊيٽا ۾ خاصيتن جو تعداد ڪافي نه آھي. ان کان پوء ان کي استعمال ڪرڻ جي ڪوشش ڪرڻ جي قابل آهي polynomial خاصيتون جيڪي موجوده استعمال ڪندي ڳڻيا ويا آهن. مثال طور، توهان وٽ هڪ گھر جي قيمت مقرر ڪرڻ لاء مقصدي فنڪشن کي وڌائڻ جو موقعو آهي ته جيئن ان ۾ چورس ميٽر جي حساب سان خاصيت شامل هجي (x2):
جاوا ڊولپرز لاءِ مشين لرننگ، حصو 2 - 8
گھڻن خصوصيتن کي استعمال ڪرڻ لاءِ فيچر اسڪيلنگ جي ضرورت آھي ، جيڪا مختلف خصوصيتن جي حد کي معياري ڪرڻ لاءِ استعمال ٿئي ٿي. اهڙيء طرح، سائيز 2 وصف لاء قدرن جي حد خاص طور تي سائيز جي خاصيت لاء قدر جي حد کان وڏي آھي. خصوصيت اسڪيلنگ جي بغير، سائيز 2 غير ضروري طور تي قيمت جي ڪارڪردگي تي اثر انداز ڪندو. ماپ 2 وصف پاران متعارف ڪرايل غلطي سائيز وصف پاران متعارف ڪرايل غلطي کان خاص طور تي وڏي ٿيندي. ھڪڙي سادي خصوصيت اسڪيلنگ الگورتھم ھيٺ ڏنل آھي:
جاوا ڊولپرز لاءِ مشين لرننگ، حصو 2 - 9
هي الگورتھم ڪلاس ۾ FeaturesScalingهيٺ ڏنل مثال ڪوڊ ۾ لاڳو ڪيو ويو آهي. ڪلاس FeaturesScalingپيش ڪري ٿو هڪ تجارتي طريقو هڪ اسڪيلنگ فنڪشن ٺاهڻ لاءِ جيڪو ٽريننگ ڊيٽا جي مطابق آهي. اندروني طور تي، تربيتي ڊيٽا جا مثال استعمال ڪيا ويندا آهن حساب ڪرڻ لاءِ اوسط، گھٽ ۾ گھٽ ۽ وڌ ۾ وڌ قدر. نتيجو ڪندڙ فنڪشن فيچر ویکٹر وٺي ٿو ۽ اسڪيل ٿيل خاصيتن سان هڪ نئون ٺاهي ٿو. فيچر اسڪيلنگ سکڻ جي عمل ۽ اڳڪٿي جي عمل ٻنهي لاءِ ضروري آهي، جيئن هيٺ ڏيکاريل آهي:
// создание массива данных
List<ltDouble[]> dataset = new ArrayList<>();
dataset.add(new Double[] { 1.0, 90.0, 8100.0 }); // feature vector of house#1
dataset.add(new Double[] { 1.0, 101.0, 10201.0 }); // feature vector of house#2
dataset.add(new Double[] { 1.0, 103.0, 10609.0 }); // ...
//...

// создание меток
List<ltDouble> labels = new ArrayList<>();
labels.add(249.0); // price label of house#1
labels.add(338.0); // price label of house#2
labels.add(304.0); // ...
//...

// создание расширенного списка признаков
Function<ltDouble[], Double[]> scalingFunc = FeaturesScaling.createFunction(dataset);
List<ltDouble[]> scaledDataset = dataset.stream().map(scalingFunc).collect(Collectors.toList());

// создаем функцию которая инициализирует теты и осуществляет обучение //используя коэффициент обучения 0.1

LinearRegressionFunction targetFunction = new LinearRegressionFunction(new double[] { 1.0, 1.0, 1.0 });
for (int i = 0; i < 10000; i++) {
 targetFunction = Learner.train(targetFunction, scaledDataset, labels, 0.1);
}

// делаем предсказание стоимости дома с площадью 600 m2
Double[] scaledFeatureVector = scalingFunc.apply(new Double[] { 1.0, 600.0, 360000.0 });
double predictedPrice = targetFunction.apply(scaledFeatureVector);
جيئن ته وڌيڪ ۽ وڌيڪ خاصيتون شامل ڪيون وينديون آهن، مقصد جي فنڪشن کي وڌائي ٿو، پر محتاط رهو. جيڪڏهن توهان تمام گهڻو پري وڃو ۽ تمام گهڻيون خاصيتون شامل ڪريو، توهان کي ختم ڪري سگهو ٿا هڪ مقصدي فنڪشن جيڪو وڌيڪ مناسب آهي.

اوور ملائڻ ۽ پار-تصديق

اوورفٽنگ تڏهن ٿيندي آهي جڏهن مقصدي فنڪشن يا ماڊل ٽريننگ ڊيٽا کي چڱيءَ طرح سان ٺهڪي ٿو، ايتري قدر جو اهو ٽريننگ ڊيٽا ۾ شور يا بي ترتيبي تبديلين کي پڪڙي ٿو. اوورفٽنگ جو ھڪڙو مثال ھيٺ ڏنل گراف ۾ ڏيکاريل آھي:
جاوا ڊولپرز لاءِ مشين لرننگ، حصو 2 - 10
جڏهن ته، هڪ اوورفٽ ماڊل ٽريننگ ڊيٽا تي تمام سٺو ڪم ڪري ٿو، پر حقيقي اڻڄاتل ڊيٽا تي خراب ڪارڪردگي ڪندو. اوورفٽنگ کان بچڻ جا ڪيترائي طريقا آهن.
  • ٽريننگ لاءِ وڏو ڊيٽا سيٽ استعمال ڪريو.
  • گھٽ خاصيتون استعمال ڪريو جيئن مٿي ڏنل گراف ۾ ڏيکاريل آھي.
  • هڪ بهتر مشين لرننگ الگورٿم استعمال ڪريو جيڪو حساب ۾ رکي ٿو باقاعده ڪرڻ.
جيڪڏهن اڳڪٿي ڪندڙ الورورٿم ٽريننگ ڊيٽا کي ختم ڪري ٿو، اهو ضروري آهي ته انهن خاصيتن کي ختم ڪيو وڃي جيڪي ان جي درستگي کي فائدو نه ڏين. مشڪلاتون خاصيتون ڳولڻ ۾ آهن جيڪي ٻين جي ڀيٽ ۾ اڳڪٿي جي درستگي تي وڌيڪ اهم اثر رکن ٿيون. جيئن گراف ۾ ڏيکاريل آهي، اوورفٽ کي بصري طور تي گراف استعمال ڪندي طئي ڪري سگهجي ٿو. اهو 2 يا 3 همراهن سان گڏ گرافس لاءِ سٺو ڪم ڪري ٿو، جيڪڏهن توهان 2 کان وڌيڪ خصوصيتون استعمال ڪندا آهيو ته گراف کي پلاٽ ڪرڻ ۽ ان جو اندازو لڳائڻ مشڪل ٿي پوندو آهي. ڪراس-تصديق ۾، توهان ٽريننگ جي عمل جي مڪمل ٿيڻ کان پوءِ الورورٿم تائين اڻڄاتل ڊيٽا استعمال ڪندي ٽريننگ کان پوءِ ماڊلز کي ٻيهر آزمايو ٿا. موجود ليبل ٿيل ڊيٽا کي 3 سيٽن ۾ ورهايو وڃي:
  • تربيتي ڊيٽا؛
  • تصديق ڊيٽا؛
  • ٽيسٽ ڊيٽا.
انهي صورت ۾، 60 سيڪڙو ليبل ٿيل رڪارڊ گھرن جي خاصيتن کي ٽارگيٽ الگورٿم جي مختلف قسمن جي تربيت جي عمل ۾ استعمال ڪيو وڃي. ٽريننگ جي عمل کان پوء، باقي ڊيٽا جو اڌ (اڳ ۾ استعمال نه ڪيو ويو) استعمال ڪيو وڃي تصديق ڪرڻ لاء ته تربيتي ٽارگيٽ الگورٿم نامعلوم ڊيٽا تي سٺو ڪم ڪري ٿو. عام طور تي، الورورٿم جيڪو ٻين کان بهتر ڪم ڪري ٿو استعمال لاء چونڊيو ويو آهي. باقي ڊيٽا استعمال ڪيو ويندو آهي ڳڻپ ڪرڻ لاءِ غلطي جي قيمت حتمي چونڊيل ماڊل لاءِ. ٻيون به آهن ڪراس-تصديق جي ٽيڪنڪ، جهڙوڪ k-fold . بهرحال، مان هن مضمون ۾ انهن کي بيان نه ڪندس.

مشين سکيا جا اوزار ۽ ويڪا فريم ورڪ

گهڻيون فريم ورڪ ۽ لائبريريون مهيا ڪن ٿيون هڪ وسيع مجموعو مشين لرننگ الگورتھم. اضافي طور تي، اهي مهيا ڪن ٿا هڪ آسان اعلي سطحي انٽرفيس ٽريننگ، ٽيسٽ ۽ پروسيسنگ ڊيٽا ماڊل لاء. ويڪا JVM لاء سڀ کان وڌيڪ مشهور فريم ورڪ مان هڪ آهي. ويڪا هڪ عملي جاوا لائبريري آهي جنهن ۾ ماڊلز جي تصديق لاءِ گرافيڪل ٽيسٽون شامل آهن. هيٺ ڏنل مثال Weka لائبريري استعمال ڪري ٿو هڪ تربيتي ڊيٽا سيٽ ٺاهڻ لاءِ جنهن ۾ خاصيتون ۽ ليبل شامل آهن. طريقو setClassIndex()- نشان لڳائڻ لاء. ويڪا ۾، هڪ ليبل هڪ طبقي جي طور تي بيان ڪيو ويو آهي:
// определяем атрибуты для признаков и меток
ArrayList<ltAttribute> attributes = new ArrayList<>();
Attribute sizeAttribute = new Attribute("sizeFeature");
attributes.add(sizeAttribute);
Attribute squaredSizeAttribute = new Attribute("squaredSizeFeature");
attributes.add(squaredSizeAttribute);
Attribute priceAttribute = new Attribute("priceLabel");
attributes.add(priceAttribute);


// создаем и заполняем список признаков 5000 примеров
Instances trainingDataset = new Instances("trainData", attributes, 5000);
trainingDataset.setClassIndex(trainingSet.numAttributes() - 1);
Instance instance = new DenseInstance(3);

instance.setValue(sizeAttribute, 90.0);
instance.setValue(squaredSizeAttribute, Math.pow(90.0, 2));
instance.setValue(priceAttribute, 249.0);
trainingDataset.add(instance);
Instance instance = new DenseInstance(3);
instance.setValue(sizeAttribute, 101.0);
...
ڊيٽا سيٽ ۽ نمونو اعتراض محفوظ ڪري سگھجي ٿو ۽ فائل مان لوڊ ڪري سگھجي ٿو. ويڪا ARFF (Attribute Relation File Format) استعمال ڪري ٿو جيڪو Weka جي گرافڪس بينچ مارڪس جي سپورٽ ڪري ٿو. هي ڊيٽا سيٽ هڪ مقصدي فنڪشن کي تربيت ڏيڻ لاءِ استعمال ڪيو ويندو آهي جيڪو ويڪا ۾ درجه بندي جي نالي سان مشهور آهي. سڀ کان پهريان، توهان کي مقصد جي فنڪشن کي بيان ڪرڻ گهرجي. هيٺ ڏنل ڪوڊ LinearRegressionدرجه بندي جو هڪ مثال ٺاهيندو. هن درجيبندي کي استعمال ڪندي تربيت ڏني ويندي buildClassifier(). طريقو buildClassifier()بهترين ٽارگيٽ ماڊل جي ڳولا ۾ ٽريننگ ڊيٽا جي بنياد تي ٿيٽا پيٽرولر چونڊيندو آهي. Weka سان، توهان کي سکڻ جي شرح يا تعداد جي تعداد کي ترتيب ڏيڻ بابت پريشان ٿيڻ جي ضرورت ناهي. Weka پڻ خصوصيت اسڪيلنگ کي آزاد طور تي انجام ڏئي ٿو.
Classifier targetFunction = new LinearRegression();
targetFunction.buildClassifier(trainingDataset);
هڪ دفعو اهي سيٽنگون ڪيون وينديون آهن، مقصد فنڪشن استعمال ڪري سگهجي ٿو گھر جي قيمت جي اڳڪٿي ڪرڻ لاء، جيئن هيٺ ڏيکاريل آهي:
Instances unlabeledInstances = new Instances("predictionset", attributes, 1);
unlabeledInstances.setClassIndex(trainingSet.numAttributes() - 1);
Instance unlabeled = new DenseInstance(3);
unlabeled.setValue(sizeAttribute, 1330.0);
unlabeled.setValue(squaredSizeAttribute, Math.pow(1330.0, 2));
unlabeledInstances.add(unlabeled);

double prediction = targetFunction.classifyInstance(unlabeledInstances.get(0));
ويڪا Evaluationهڪ تربيت يافته طبقي يا ماڊل کي جانچڻ لاءِ هڪ ڪلاس فراهم ڪري ٿو. هيٺ ڏنل ڪوڊ ۾، غلط نتيجن کان بچڻ لاءِ استعمال ٿيل تصديق واري ڊيٽا جي چونڊيل صف. ماپ جا نتيجا (غلطي جي قيمت) ڪنسول تي ڏيکاريا ويندا. عام طور تي، تشخيص جا نتيجا استعمال ڪيا ويندا آھن ماڊلز جو مقابلو ڪرڻ لاءِ جيڪي مختلف مشين لرننگ الگورتھم استعمال ڪندي تربيت ڏنيون ويون آھن، يا انھن جا مختلف قسم:
Evaluation evaluation = new Evaluation(trainingDataset);
evaluation.evaluateModel(targetFunction, validationDataset);
System.out.println(evaluation.toSummaryString("Results", false));
مٿي ڏنل مثال لڪير رجعت کي استعمال ڪري ٿو، جيڪو عددي قدرن جي اڳڪٿي ڪري ٿو، جهڙوڪ گھر جي قيمت، ان پٽ ويلز جي بنياد تي. لڪير ريگريشن مسلسل عددي قدرن جي اڳڪٿي جي حمايت ڪري ٿي. بائنري قدرن جي اڳڪٿي ڪرڻ لاءِ ("ها" ۽ "نه")، توهان کي ٻين مشيني سکيا وارو الگورتھم استعمال ڪرڻو پوندو. مثال طور، فيصلي جو وڻ، نيورل نيٽ ورڪ يا لوجسٽڪ ريگريشن.
// использование логистической регрессии
Classifier targetFunction = new Logistic();
targetFunction.buildClassifier(trainingSet);
توھان استعمال ڪري سگھوٿا انھن مان ھڪڙو الگورٿم، مثال طور، اڳڪٿي ڪرڻ لاءِ ته ڇا ھڪڙو اي ميل پيغام اسپام آھي، يا موسم جي اڳڪٿي ڪري، يا اڳڪٿي ڪريو ته گھر سٺو وڪڻندو. جيڪڏھن توھان پنھنجي الگورٿم کي سيکارڻ چاھيو ٿا موسم جي اڳڪٿي ڪرڻ لاءِ يا گھر ڪيترو جلدي وڪرو ٿيندو، توھان کي ھڪ مختلف ڊيٽا سيٽ جي ضرورت آھي، مثال طور.topseller:
// использование атрибута маркера topseller instead of атрибута маркера цена
ArrayList<string> classVal = new ArrayList<>();
classVal.add("true");
classVal.add("false");

Attribute topsellerAttribute = new Attribute("topsellerLabel", classVal);
attributes.add(topsellerAttribute);
هي ڊيٽا سيٽ هڪ نئين درجه بندي کي تربيت ڏيڻ لاءِ استعمال ڪيو ويندو topseller. هڪ دفعو ان کي تربيت ڏني وئي آهي، اڳڪٿي ڪال کي هڪ ٽوڪن ڪلاس انڊيڪس واپس ڪرڻ گهرجي جيڪا اڳڪٿي ڪيل قيمت حاصل ڪرڻ لاءِ استعمال ٿي سگهي ٿي.
int idx = (int) targetFunction.classifyInstance(unlabeledInstances.get(0));
String prediction = classVal.get(idx);

نتيجو

جيتوڻيڪ مشين لرننگ انگن اکرن سان ويجھي جڙيل آهي ۽ ڪيترن ئي رياضياتي تصورن کي استعمال ڪري ٿي، مشين لرننگ ٽول ڪٽ توهان کي اجازت ڏئي ٿي ته توهان مشين لرننگ کي توهان جي پروگرامن ۾ ضم ڪرڻ شروع ڪريو بغير رياضي جي ڄاڻ جي. بهرحال، توهان جيتري بهتر سمجھندا هيٺئين مشين لرننگ الگورتھم، جيئن ته لڪير ريگريشن الگورٿم جنهن کي اسان هن آرٽيڪل ۾ ڳوليندا، اوترو وڌيڪ توهان صحيح الگورٿم چونڊڻ جي قابل هوندا ۽ ان کي بهتر ڪارڪردگي لاءِ ٽيون ڪندا. انگريزيءَ مان ترجمو . ليکڪ: گريگور روٿ، سافٽ ويئر آرڪيٽيڪٽ، جاوا ورلڊ.
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION