machine-learning
Démarrer avec Machine Learning en utilisant Apache spark MLib
Recherche…
Introduction
Apache spark MLib fournit (JAVA, R, PYTHON, SCALA) 1.) Divers algorithmes d’apprentissage automatique sur la régression, la classification, le clustering, le filtrage collaboratif qui sont principalement utilisés dans l’apprentissage automatique. 2.) Il prend en charge l'extraction de fonctionnalités, la transformation, etc. 3.) Il permet aux professionnels de la gestion de données de résoudre leurs problèmes d'apprentissage automatique (calcul graphique, diffusion en continu et traitement interactif en temps réel).
Remarques
Veuillez vous référer ci-dessous pour en savoir plus sur spark MLib
Écrivez votre premier problème de classification à l'aide du modèle de régression logistique
J'utilise eclipse ici, et vous devez ajouter ci-dessous la dépendance à votre pom.xml
1.) POM.XML
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.predection.classification</groupId>
<artifactId>logisitcRegression</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>logisitcRegression</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- Spark -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-mllib_2.10</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.11</artifactId>
<version>2.1.0</version>
</dependency>
</dependencies>
</project>
2.) APP.JAVA (votre classe d'application)
Nous faisons de la classification en fonction du pays, des heures et nous cliquons sur notre étiquette.
package com.predection.classification.logisitcRegression;
import org.apache.spark.SparkConf;
import org.apache.spark.ml.classification.LogisticRegression;
import org.apache.spark.ml.classification.LogisticRegressionModel;
import org.apache.spark.ml.feature.StringIndexer;
import org.apache.spark.ml.feature.VectorAssembler;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SparkSession;
import org.apache.spark.sql.types.StructField;
import org.apache.spark.sql.types.StructType;
import java.util.Arrays;
import java.util.List;
import org.apache.spark.sql.RowFactory;
import static org.apache.spark.sql.types.DataTypes.*;
/**
* Classification problem using Logistic Regression Model
*
*/
public class App
{
public static void main( String[] args )
{
SparkConf sparkConf = new SparkConf().setAppName("JavaLogisticRegressionExample");
// Creating spark session
SparkSession sparkSession = SparkSession.builder().config(sparkConf).getOrCreate();
StructType schema = createStructType(new StructField[]{
createStructField("id", IntegerType, false),
createStructField("country", StringType, false),
createStructField("hour", IntegerType, false),
createStructField("clicked", DoubleType, false)
});
List<Row> data = Arrays.asList(
RowFactory.create(7, "US", 18, 1.0),
RowFactory.create(8, "CA", 12, 0.0),
RowFactory.create(9, "NZ", 15, 1.0),
RowFactory.create(10,"FR", 8, 0.0),
RowFactory.create(11, "IT", 16, 1.0),
RowFactory.create(12, "CH", 5, 0.0),
RowFactory.create(13, "AU", 20, 1.0)
);
Dataset<Row> dataset = sparkSession.createDataFrame(data, schema);
// Using stringindexer transformer to transform string into index
dataset = new StringIndexer().setInputCol("country").setOutputCol("countryIndex").fit(dataset).transform(dataset);
// creating feature vector using dependent variables countryIndex, hours are features and clicked is label
VectorAssembler assembler = new VectorAssembler()
.setInputCols(new String[] {"countryIndex", "hour"})
.setOutputCol("features");
Dataset<Row> finalDS = assembler.transform(dataset);
// Split the data into training and test sets (30% held out for
// testing).
Dataset<Row>[] splits = finalDS.randomSplit(new double[] { 0.7, 0.3 });
Dataset<Row> trainingData = splits[0];
Dataset<Row> testData = splits[1];
trainingData.show();
testData.show();
// Building LogisticRegression Model
LogisticRegression lr = new LogisticRegression().setMaxIter(10).setRegParam(0.3).setElasticNetParam(0.8).setLabelCol("clicked");
// Fit the model
LogisticRegressionModel lrModel = lr.fit(trainingData);
// Transform the model, and predict class for test dataset
Dataset<Row> output = lrModel.transform(testData);
output.show();
}
}
3.) Pour exécuter cette application, exécutez d'abord mvn-clean-package
sur le projet d'application, cela créerait jar. 4.) Ouvrez le répertoire d’étincelle et soumettez ce travail.
bin/spark-submit --class com.predection.regression.App --master local[2] ./regression-0.0.1-SNAPSHOT.jar(path to the jar file)
5.) Après la soumission, voir les données de formation
6.) données de test de la même manière
7.) Et voici le résultat de la prédiction sous la colonne de prédiction