{"id":3511,"date":"2023-08-31T11:12:58","date_gmt":"2023-08-31T11:12:58","guid":{"rendered":"https:\/\/neuraldesigner.com\/learning\/orbit-class\/"},"modified":"2025-10-06T10:36:34","modified_gmt":"2025-10-06T08:36:34","slug":"orbit-class","status":"publish","type":"learning","link":"https:\/\/www.neuraldesigner.com\/learning\/examples\/orbit-class\/","title":{"rendered":"Classify asteroid orbits using machine learning"},"content":{"rendered":"<p>The primary objective is to develop a machine learning model for classifying asteroid orbits.<\/p>\n<section>This example is solved with the data science and machine learning platform <a href=\"https:\/\/www.neuraldesigner.com\/\">Neural Designer<\/a>.\u00a0To follow it step by step, you can use the <a style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-weight: var( --e-global-typography-text-font-weight ); background-color: #ffffff;\" href=\"https:\/\/www.neuraldesigner.com\/free-trial\">free trial<\/a>.<\/section>\n<section>\n<h3>Contents<\/h3>\n<ol>\n<li><a href=\"#ApplicationType\">Application type<\/a>.<\/li>\n<li><a href=\"#DataSet\">Data set<\/a>.<\/li>\n<li><a href=\"#NeuralNetwork\">Neural network<\/a>.<\/li>\n<li><a href=\"#TrainingStrategy\">Training strategy<\/a>.<\/li>\n<li><a href=\"#ModelSelection\">Model selection<\/a>.<\/li>\n<li><a href=\"#TestingAnalysis\">Testing analysis<\/a>.<\/li>\n<li><a href=\"#ModelDeployment\">Model deployment<\/a>.<\/li>\n<li><a href=\"#TutorialVideo\">Tutorial video<\/a>.<\/li>\n<\/ol>\n<\/section>\n<section>\n<h2>1. Application type<\/h2>\n<p>This is a <a href=\"https:\/\/www.neuraldesigner.com\/learning\/tutorials\/neural-networks-applications#Classification\">classification<\/a> project since the variable to be predicted is categorical: AMO, APO, ATE.<\/p>\n<p>These orbit types refer to asteroid orbits, allowing the model to categorize orbits according to the aforementioned asteroid orbit classes.<\/p>\n<\/section>\n<section>\n<h2>2. Data set<\/h2>\n<p>The first step is to prepare the\u00a0<span style=\"box-sizing: border-box; margin: 0px; padding: 0px;\"><a href=\"https:\/\/www.neuraldesigner.com\/learning\/tutorials\/data-set\" target=\"_blank\" rel=\"noopener\">dataset<\/a>, which serves as<\/span>\u00a0the source of information for the classification problem.<\/p>\n<p>For that, we need to configure the following concepts:<\/p>\n<ul>\n<li>Data source.<\/li>\n<li>Variables.<\/li>\n<li>Instances.<\/li>\n<\/ul>\n<h3>Data source<\/h3>\n<article class=\"text-token-text-primary w-full focus:outline-none scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" tabindex=\"-1\" data-turn-id=\"request-68c14edc-00d8-832b-af79-36da58cd2575-18\" data-testid=\"conversation-turn-60\" data-scroll-anchor=\"true\" data-turn=\"assistant\">\n<div class=\"text-base my-auto mx-auto pb-10 [--thread-content-margin:--spacing(4)] thread-sm:[--thread-content-margin:--spacing(6)] thread-lg:[--thread-content-margin:--spacing(16)] px-(--thread-content-margin)\">\n<div class=\"[--thread-content-max-width:40rem] thread-sm:[--thread-content-max-width:40rem] thread-lg:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\" tabindex=\"-1\">\n<div class=\"flex max-w-full flex-col grow\">\n<div class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal [.text-message+&amp;]:mt-5\" dir=\"auto\" data-message-author-role=\"assistant\" data-message-id=\"9c0de2d7-9db7-4154-8806-c8aa435828e8\" data-message-model-slug=\"gpt-5\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden first:pt-[3px]\">\n<div class=\"markdown prose dark:prose-invert w-full break-words light markdown-new-styling\">\n<p data-start=\"0\" data-end=\"72\" data-is-last-node=\"\" data-is-only-node=\"\">The data for this example comes from the CSV\u00a0<span style=\"box-sizing: border-box; margin: 0px; padding: 0px;\">file<\/span><em data-start=\"20\" data-end=\"37\"><span style=\"box-sizing: border-box; margin: 0px; padding: 0px;\"> <a href=\"https:\/\/www.neuraldesigner.com\/wp-content\/uploads\/2023\/10\/orbit_class.csv\" target=\"_blank\" rel=\"noopener\"><em>orbit_class.csv<\/em><\/a><\/span><\/em>.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/article>\n<p>The number of columns is 12, and the number of rows is 1722.<\/p>\n<h3>Variables<\/h3>\n<p>The <a style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-weight: var( --e-global-typography-text-font-weight ); background-color: #ffffff;\" href=\"https:\/\/www.neuraldesigner.com\/learning\/tutorials\/data-set#Variables\">variables are:<\/a><\/p>\n<\/section>\n<h4 data-start=\"111\" data-end=\"139\"><strong data-start=\"115\" data-end=\"137\">Orbital Parameters<\/strong><\/h4>\n<ul>\n<li data-start=\"142\" data-end=\"254\"><strong data-start=\"142\" data-end=\"165\">a (Semi-major axis)<\/strong>: Average distance between the object and the Sun, measured in astronomical units (AU).<\/li>\n<li data-start=\"257\" data-end=\"365\"><strong data-start=\"257\" data-end=\"277\">e (Eccentricity)<\/strong>: Measure of how elongated the orbit is (0 = circular, closer to 1 = more elliptical).<\/li>\n<li data-start=\"368\" data-end=\"469\"><strong data-start=\"368\" data-end=\"387\">i (Inclination)<\/strong>: Tilt of the orbit relative to the ecliptic plane (J2000), measured in degrees.<\/li>\n<li data-start=\"472\" data-end=\"600\"><strong data-start=\"472\" data-end=\"502\">w (Argument of perihelion)<\/strong>: Angle from the ascending node to the orbit\u2019s closest approach to the Sun, measured in degrees.<\/li>\n<li data-start=\"603\" data-end=\"723\"><strong data-start=\"603\" data-end=\"641\">Node (Longitude of ascending node)<\/strong>: Angle from the reference direction to the ascending node, measured in degrees.<\/li>\n<li data-start=\"726\" data-end=\"855\"><strong data-start=\"726\" data-end=\"746\">M (Mean anomaly)<\/strong>: Angle describing the position of the object in its orbit at a specific time (epoch), measured in degrees.<\/li>\n<\/ul>\n<h4 data-start=\"857\" data-end=\"885\"><strong data-start=\"861\" data-end=\"883\">Distances &amp; Period<\/strong><\/h4>\n<ul>\n<li data-start=\"888\" data-end=\"974\"><strong data-start=\"888\" data-end=\"915\">q (Perihelion distance)<\/strong>: Closest distance between the object and the Sun, in AU.<\/li>\n<li data-start=\"977\" data-end=\"1062\"><strong data-start=\"977\" data-end=\"1002\">Q (Aphelion distance)<\/strong>: Farthest distance between the object and the Sun, in AU.<\/li>\n<li data-start=\"1065\" data-end=\"1161\"><strong data-start=\"1065\" data-end=\"1087\">P (Orbital period)<\/strong>: Time the object takes to complete one orbit, measured in Julian years.<\/li>\n<\/ul>\n<h4 data-start=\"1163\" data-end=\"1201\"><strong data-start=\"1167\" data-end=\"1199\">Physical &amp; Safety Indicators<\/strong><\/h4>\n<ul>\n<li data-start=\"1204\" data-end=\"1315\"><strong data-start=\"1204\" data-end=\"1232\">H (Absolute V-magnitude)<\/strong>: Brightness of the object as observed from a standard distance, related to size.<\/li>\n<li data-start=\"1318\" data-end=\"1450\"><strong data-start=\"1318\" data-end=\"1364\">MOID (Minimum Orbit Intersection Distance)<\/strong>: Closest possible distance between the orbit of the object (NEO) and Earth\u2019s orbit.<\/li>\n<\/ul>\n<h4 data-start=\"1452\" data-end=\"1477\"><strong data-start=\"1456\" data-end=\"1475\">Target Variable<\/strong><\/h4>\n<ul data-start=\"1478\" data-end=\"1532\">\n<li data-start=\"1478\" data-end=\"1532\">\n<p data-start=\"1480\" data-end=\"1532\"><strong data-start=\"1480\" data-end=\"1489\">Class<\/strong>: Orbital classification (AMO, APO, ATE).<\/p>\n<\/li>\n<\/ul>\n<section>The above target variables are asteroid orbits. AMO refers to Amor asteroids, which are near-Earth asteroids.The orbital perihelion of these objects is close to, but greater than, the orbital aphelion of Earth (a &gt; 1.0 AU and 1.017 AU &lt; q &lt; 1.3 AU).ATE refers to Aten asteroids, a dynamic group of asteroids whose orbits bring them into proximity to Earth.<\/p>\n<p>By definition, Atens are Earth-crossing asteroids (a&lt;1.0 AU and Q&gt;0.983 AU).<\/p>\n<p>These different asteroid orbits are shown in the following image:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.neuraldesigner.com\/images\/orbit-amor-apollo-aten.webp\" \/><\/p>\n<p>Note that neural networks work with numbers.\u00a0In this regard, the categorical variable &#8220;class&#8221; is transformed into three numerical variables as follows:<\/p>\n<ul>\n<li>AMO: 1 0 0.<\/li>\n<li>APO: 0 1 0.<\/li>\n<li>ATE: 0 0 1.<\/li>\n<\/ul>\n<h3>Instances<\/h3>\n<article class=\"text-token-text-primary w-full focus:outline-none scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" tabindex=\"-1\" data-turn-id=\"request-68c14edc-00d8-832b-af79-36da58cd2575-16\" data-testid=\"conversation-turn-56\" data-scroll-anchor=\"true\" data-turn=\"assistant\">\n<div class=\"text-base my-auto mx-auto pb-10 [--thread-content-margin:--spacing(4)] thread-sm:[--thread-content-margin:--spacing(6)] thread-lg:[--thread-content-margin:--spacing(16)] px-(--thread-content-margin)\">\n<div class=\"[--thread-content-max-width:40rem] thread-sm:[--thread-content-max-width:40rem] thread-lg:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\" tabindex=\"-1\">\n<div class=\"flex max-w-full flex-col grow\">\n<div class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal [.text-message+&amp;]:mt-5\" dir=\"auto\" data-message-author-role=\"assistant\" data-message-id=\"1df99831-486a-4bdb-8f19-df81d7ec3cf0\" data-message-model-slug=\"gpt-5\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden first:pt-[3px]\">\n<div class=\"markdown prose dark:prose-invert w-full break-words light markdown-new-styling\">\n<p data-start=\"0\" data-end=\"98\" data-is-last-node=\"\" data-is-only-node=\"\">The <a href=\"https:\/\/www.neuraldesigner.com\/learning\/tutorials\/data-set#Instances\">instances<\/a> are randomly split into 60% training (1,034), 20% validation (344), and 20% testing (344).<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/article>\n<h3>Variables distributions<\/h3>\n<p>We can calculate the <a href=\"https:\/\/www.neuraldesigner.com\/learning\/tutorials\/data-set#Distributions\">distributions<\/a> of all variables.<\/p>\n<p>The following figure is a pie chart showing the various orbit types.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.neuraldesigner.com\/images\/orbit-pie-chart.webp\" \/><\/p>\n<p>As we can see, most of the samples are APO orbits.<\/p>\n<h3>Inputs-targets correlations<\/h3>\n<p>Finally, the <a href=\"https:\/\/www.neuraldesigner.com\/learning\/tutorials\/data-set#InputsTargetsCorrelations\">input-target correlations<\/a> might indicate to us what factors most influence.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.neuraldesigner.com\/images\/orbit-correlation.webp\" \/><\/p>\n<p>Here, the most correlated variables with the classification are q and Q, the semi-major axis, perihelion distance, and aphelion distance of the orbit.<\/p>\n<p>Additionally, there are a few correlated variables, such as M, mean anomaly, or H, absolute V magnitude.<\/p>\n<\/section>\n<section>\n<h2>3. Neural network<\/h2>\n<p>The second step is to choose a <a href=\"https:\/\/www.neuraldesigner.com\/learning\/tutorials\/neural-network\">neural network<\/a> for classification.<\/p>\n<section>The number of inputs is 11, and the number of outputs is 3.It is composed of the following layers:<\/p>\n<\/section>\n<ul>\n<li>A scaling layer.<\/li>\n<li>A hidden dense layer.<\/li>\n<li>An output dense layer.<\/li>\n<\/ul>\n<h3>Scaling layer<\/h3>\n<p>The <a href=\"https:\/\/www.neuraldesigner.com\/learning\/tutorials\/neural-network#ScalingLayer\">scaling layer<\/a> contains the statistics on the inputs calculated from the data file and the method for scaling the input variables.<\/p>\n<h3>Hidden dense layer<\/h3>\n<p>The hidden <a href=\"https:\/\/www.neuraldesigner.com\/learning\/tutorials\/neural-network#PerceptronLayers\">dense layer<\/a>\u00a0has 11 inputs and 3 neurons.<\/p>\n<h3>Output dense layer<\/h3>\n<p>The <a style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-weight: var( --e-global-typography-text-font-weight ); background-color: #ffffff;\" href=\"https:\/\/www.neuraldesigner.com\/learning\/tutorials\/neural-network#ProbabilisticLayer\">output dense layer<\/a> allows the outputs to be interpreted as probabilities.\u00a0All outputs are between 0 and 1, and their sum is 1.<\/p>\n<p>The <a href=\"https:\/\/www.neuraldesigner.com\/learning\/tutorials\/neural-network#SoftmaxProbabilisticMethod\">softmax probabilistic method<\/a> is used here.\u00a0The neural network has three outputs since the target variable contains 3 classes (AMO, APO, ATE).<\/p>\n<h3>Neural network graph<\/h3>\n<p>The following figure is a graphical representation of this <a style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-weight: var( --e-global-typography-text-font-weight ); background-color: #ffffff;\" href=\"https:\/\/www.neuraldesigner.com\/learning\/tutorials\/neural-network#ClassificationNeuralNetworks\">classification neural network<\/a>.<\/p>\n<p>Here, the yellow circles represent scaling neurons, the blue circles represent perceptron neurons, and the red circles represent probabilistic neurons.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.neuraldesigner.com\/images\/orbit-neural-network.webp\" \/><\/p>\n<\/section>\n<section>\n<h2>4. Training strategy<\/h2>\n<p>The fourth step is to set the <a href=\"https:\/\/www.neuraldesigner.com\/learning\/tutorials\/training-strategy\">training strategy<\/a>, which is composed of:<\/p>\n<ul>\n<li>Loss index.<\/li>\n<li>Optimization algorithm.<\/li>\n<\/ul>\n<h3>Loss index<\/h3>\n<p>The <a href=\"https:\/\/www.neuraldesigner.com\/learning\/tutorials\/training-strategy#LossIndex\">loss index<\/a> chosen for this application is the\u00a0<a style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-weight: var( --e-global-typography-text-font-weight ); background-color: #ffffff;\" href=\"https:\/\/www.neuraldesigner.com\/learning\/tutorials\/training-strategy#NormalizedSquaredError\">normalized squared error<\/a>\u00a0with <a style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-weight: var( --e-global-typography-text-font-weight ); background-color: #ffffff;\" href=\"https:\/\/www.neuraldesigner.com\/learning\/tutorials\/training-strategy#L2Regularization\">L2 regularization<\/a>.<\/p>\n<p>The <a href=\"https:\/\/www.neuraldesigner.com\/learning\/tutorials\/training-strategy#ErrorTerm\">error term<\/a> fits the neural network to the <a href=\"https:\/\/www.neuraldesigner.com\/learning\/tutorials\/training-strategy#TrainingInstances\">training instances<\/a> of the data set.\u00a0The <a style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-weight: var( --e-global-typography-text-font-weight ); background-color: #ffffff;\" href=\"https:\/\/www.neuraldesigner.com\/learning\/tutorials\/training-strategy#RegularizationTerm\">regularization term<\/a> makes the model more stable and improves generalization.<\/p>\n<h3>Optimization algorithm<\/h3>\n<p>The <a style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-weight: var( --e-global-typography-text-font-weight ); background-color: #ffffff;\" href=\"https:\/\/www.neuraldesigner.com\/learning\/tutorials\/training-strategy#OptimizationAlgorithm\">optimization algorithm<\/a>\u00a0searches for the neural network parameters that minimize the loss index. The <a style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-weight: var( --e-global-typography-text-font-weight ); background-color: #ffffff;\" href=\"https:\/\/www.neuraldesigner.com\/learning\/tutorials\/training-strategy#QuasiNewtonMethod\">quasi-Newton method<\/a>\u00a0is chosen here.<\/p>\n<h3>Training<\/h3>\n<p>The following chart shows how training and selection errors decrease with the epochs during training.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.neuraldesigner.com\/images\/orbit-quasi-newton.webp\" \/><\/p>\n<article class=\"text-token-text-primary w-full focus:outline-none scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" tabindex=\"-1\" data-turn-id=\"request-68c14edc-00d8-832b-af79-36da58cd2575-17\" data-testid=\"conversation-turn-58\" data-scroll-anchor=\"true\" data-turn=\"assistant\">\n<div class=\"text-base my-auto mx-auto pb-10 [--thread-content-margin:--spacing(4)] thread-sm:[--thread-content-margin:--spacing(6)] thread-lg:[--thread-content-margin:--spacing(16)] px-(--thread-content-margin)\">\n<div class=\"[--thread-content-max-width:40rem] thread-sm:[--thread-content-max-width:40rem] thread-lg:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\" tabindex=\"-1\">\n<div class=\"flex max-w-full flex-col grow\">\n<div class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal [.text-message+&amp;]:mt-5\" dir=\"auto\" data-message-author-role=\"assistant\" data-message-id=\"c3cc8546-8fa9-4851-b7ba-06cd73ffd3f2\" data-message-model-slug=\"gpt-5\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden first:pt-[3px]\">\n<div class=\"markdown prose dark:prose-invert w-full break-words light markdown-new-styling\">\n<p data-start=\"0\" data-end=\"90\" data-is-last-node=\"\" data-is-only-node=\"\">The final errors are 0.046 NSE for training (blue) and 0.189 NSE for validation (orange).<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/article>\n<\/section>\n<section>\n<h2>5. Model selection<\/h2>\n<p>The objective of <a href=\"https:\/\/www.neuraldesigner.com\/learning\/tutorials\/model-selection\">model selection<\/a> is to find the network architecture with the best generalization properties, which minimizes the error on the <a style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-weight: var( --e-global-typography-text-font-weight ); background-color: #ffffff;\" href=\"https:\/\/www.neuraldesigner.com\/learning\/tutorials\/data-set#SelectionInstances\">selected instances<\/a> of the data set.<\/p>\n<p><a href=\"https:\/\/www.neuraldesigner.com\/learning\/tutorials\/model-selection#OrderSelection\">Order selection<\/a> algorithms train several network architectures with different numbers of neurons and select the one with the smallest selection error.<\/p>\n<p>The <a href=\"https:\/\/www.neuraldesigner.com\/learning\/tutorials\/model-selection#IncrementalOrder\">incremental order<\/a> method starts with a few neurons and increases the complexity at each iteration.<\/p>\n<\/section>\n<section>\n<h2>6. Testing analysis<\/h2>\n<p>The purpose of the <a href=\"https:\/\/www.neuraldesigner.com\/learning\/tutorials\/testing-analysis\">testing analysis<\/a> is to validate the model&#8217;s generalization performance.<\/p>\n<p>Here, we compare the neural network outputs to the corresponding targets in the\u00a0<span style=\"box-sizing: border-box; margin: 0px; padding: 0px;\"><a href=\"https:\/\/www.neuraldesigner.com\/learning\/tutorials\/data-set#TestingInstances\" target=\"_blank\" rel=\"noopener\">test instances<\/a> of the dataset<\/span>.<\/p>\n<h3>Confusion matrix<\/h3>\n<article class=\"text-token-text-primary w-full focus:outline-none scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" tabindex=\"-1\" data-turn-id=\"request-68c14edc-00d8-832b-af79-36da58cd2575-20\" data-testid=\"conversation-turn-64\" data-scroll-anchor=\"true\" data-turn=\"assistant\">\n<div class=\"text-base my-auto mx-auto pb-10 [--thread-content-margin:--spacing(4)] thread-sm:[--thread-content-margin:--spacing(6)] thread-lg:[--thread-content-margin:--spacing(16)] px-(--thread-content-margin)\">\n<div class=\"[--thread-content-max-width:40rem] thread-sm:[--thread-content-max-width:40rem] thread-lg:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\" tabindex=\"-1\">\n<div class=\"flex max-w-full flex-col grow\">\n<div class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal [.text-message+&amp;]:mt-5\" dir=\"auto\" data-message-author-role=\"assistant\" data-message-id=\"3427e26b-6075-426a-8937-337dd7272f5f\" data-message-model-slug=\"gpt-5\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden first:pt-[3px]\">\n<div class=\"markdown prose dark:prose-invert w-full break-words light markdown-new-styling\">\n<p data-start=\"0\" data-end=\"91\" data-is-last-node=\"\" data-is-only-node=\"\">In the <a href=\"https:\/\/www.neuraldesigner.com\/learning\/tutorials\/testing-analysis#ConfusionMatrix\">confusion matrix<\/a>, rows show the actual values and columns show the predicted values.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/article>\n<p>The diagonal cells show the correctly classified cases, and the off-diagonal cells show the misclassified cases.<\/p>\n<table>\n<tbody>\n<tr>\n<th><\/th>\n<th>Predicted APO<\/th>\n<th>Predicted ATE<\/th>\n<th>Predicted AMO<\/th>\n<\/tr>\n<tr>\n<th>Real APO<\/th>\n<td style=\"text-align: right;\">283 (84.0%)<\/td>\n<td style=\"text-align: right;\">0 (0.0%)<\/td>\n<td style=\"text-align: right;\">1 (0.3%)<\/td>\n<\/tr>\n<tr>\n<th>Real ATE<\/th>\n<td style=\"text-align: right;\">1 (0.3%)<\/td>\n<td style=\"text-align: right;\">30 (8.7%)<\/td>\n<td style=\"text-align: right;\">0 (0.0%)<\/td>\n<\/tr>\n<tr>\n<th>Real AMO<\/th>\n<td style=\"text-align: right;\">7 (2.0%)<\/td>\n<td style=\"text-align: right;\">0 (0.0%)<\/td>\n<td style=\"text-align: right;\">16 (4.7%)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>As we can see, the model correctly predicts 335 instances (97.4%), while misclassifying 9 (2.6%).<\/p>\n<p>This indicates that our predictive model achieves high classification accuracy.<\/p>\n<\/section>\n<section>\n<h2>7. Model deployment<\/h2>\n<article class=\"text-token-text-primary w-full focus:outline-none scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" tabindex=\"-1\" data-turn-id=\"request-68c14edc-00d8-832b-af79-36da58cd2575-21\" data-testid=\"conversation-turn-66\" data-scroll-anchor=\"true\" data-turn=\"assistant\">\n<div class=\"text-base my-auto mx-auto pb-10 [--thread-content-margin:--spacing(4)] thread-sm:[--thread-content-margin:--spacing(6)] thread-lg:[--thread-content-margin:--spacing(16)] px-(--thread-content-margin)\">\n<div class=\"[--thread-content-max-width:40rem] thread-sm:[--thread-content-max-width:40rem] thread-lg:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\" tabindex=\"-1\">\n<div class=\"flex max-w-full flex-col grow\">\n<div class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal [.text-message+&amp;]:mt-5\" dir=\"auto\" data-message-author-role=\"assistant\" data-message-id=\"36d0a79d-9228-4ce7-a3c8-3343108b113f\" data-message-model-slug=\"gpt-5\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden first:pt-[3px]\">\n<div class=\"markdown prose dark:prose-invert w-full break-words light markdown-new-styling\">\n<p data-start=\"0\" data-end=\"103\" data-is-last-node=\"\" data-is-only-node=\"\">The neural network is now ready to make predictions on new inputs, a process known as <a href=\"https:\/\/www.neuraldesigner.com\/learning\/tutorials\/model-deployment\">model deployment<\/a>.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/article>\n<h3>Neural network outputs<\/h3>\n<p>We calculate the <a style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-weight: var( --e-global-typography-text-font-weight ); background-color: #ffffff;\" href=\"https:\/\/www.neuraldesigner.com\/learning\/tutorials\/model-deployment#NeuralNetworkOutputs\">neural network outputs<\/a> from the different variables to classify a given orbit.<\/p>\n<p>For instance:<\/p>\n<ul>\n<li>a: 1.75 AU.<\/li>\n<li>e: 0.53.<\/li>\n<li>i: 13.35 degrees.<\/li>\n<li>w: 180.46 degrees.<\/li>\n<li>Node: 172.25 degrees.<\/li>\n<li>M: 180.73 degrees.<\/li>\n<li>q: 0.76 AU.<\/li>\n<li>Q: 2.75 AU.<\/li>\n<li>P: 2.44 yr.<\/li>\n<li>H: 19.94.<\/li>\n<li>MOID: 0.02 AU.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul>\n<li><b>Probability of APO: 99.9%.<\/b><\/li>\n<li><b>Probability of ATE: ~0.0%.<\/b><\/li>\n<li><b>Probability of AMO: ~0.0%.<\/b><\/li>\n<\/ul>\n<p>The neural network would classify the orbit as an Apollo asteroid orbit for this case since it has the highest probability.<\/p>\n<h2>Conclusions<\/h2>\n<p>We have just built a predictive model to determine the possible asteroid orbit type.<\/p>\n<\/section>\n<section>\n<h2>References<\/h2>\n<ul>\n<li>Kaggle. <a href=\"https:\/\/www.kaggle.com\/brsdincer\/orbitclassification\">Orbit Classification For Prediction<\/a>.<\/li>\n<\/ul>\n<\/section>\n<section>\n<h2>Related posts<\/h2>\n<\/section>\n","protected":false},"author":13,"featured_media":1778,"template":"","categories":[29],"tags":[],"class_list":["post-3511","learning","type-learning","status-publish","has-post-thumbnail","hentry","category-examples"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Classify asteroid orbits using machine learning<\/title>\n<meta name=\"description\" content=\"Build a machine learning model to classify asteroid orbits according to Amor, Apollo, and Aten (AMO, APO, and ATE) orbit classes.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.neuraldesigner.com\/learning\/examples\/orbit-class\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Asteroid orbit machine learning example\" \/>\n<meta property=\"og:description\" content=\"In this example, we develop a classification method for predicting orbit class.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.neuraldesigner.com\/learning\/examples\/orbit-class\/\" \/>\n<meta property=\"og:site_name\" content=\"Neural Designer\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-06T08:36:34+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.neuraldesigner.com\/wp-content\/uploads\/2023\/06\/orbit.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Asteroid orbit machine learning example\" \/>\n<meta name=\"twitter:description\" content=\"In this example, we develop a classification method for predicting orbit class.\" \/>\n<meta name=\"twitter:site\" content=\"@NeuralDesigner\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.neuraldesigner.com\/learning\/examples\/orbit-class\/\",\"url\":\"https:\/\/www.neuraldesigner.com\/learning\/examples\/orbit-class\/\",\"name\":\"Classify asteroid orbits using machine learning\",\"isPartOf\":{\"@id\":\"https:\/\/www.neuraldesigner.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.neuraldesigner.com\/learning\/examples\/orbit-class\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.neuraldesigner.com\/learning\/examples\/orbit-class\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.neuraldesigner.com\/wp-content\/uploads\/2023\/06\/orbit.webp\",\"datePublished\":\"2023-08-31T11:12:58+00:00\",\"dateModified\":\"2025-10-06T08:36:34+00:00\",\"description\":\"Build a machine learning model to classify asteroid orbits according to Amor, Apollo, and Aten (AMO, APO, and ATE) orbit classes.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.neuraldesigner.com\/learning\/examples\/orbit-class\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.neuraldesigner.com\/learning\/examples\/orbit-class\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.neuraldesigner.com\/learning\/examples\/orbit-class\/#primaryimage\",\"url\":\"https:\/\/www.neuraldesigner.com\/wp-content\/uploads\/2023\/06\/orbit.webp\",\"contentUrl\":\"https:\/\/www.neuraldesigner.com\/wp-content\/uploads\/2023\/06\/orbit.webp\",\"width\":1200,\"height\":628},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.neuraldesigner.com\/learning\/examples\/orbit-class\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.neuraldesigner.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Learning\",\"item\":\"https:\/\/www.neuraldesigner.com\/learning\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Classify asteroid orbits using machine learning\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.neuraldesigner.com\/#website\",\"url\":\"https:\/\/www.neuraldesigner.com\/\",\"name\":\"Neural Designer\",\"description\":\"Explanable AI Platform\",\"publisher\":{\"@id\":\"https:\/\/www.neuraldesigner.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.neuraldesigner.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.neuraldesigner.com\/#organization\",\"name\":\"Neural Designer\",\"url\":\"https:\/\/www.neuraldesigner.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.neuraldesigner.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.neuraldesigner.com\/wp-content\/uploads\/2023\/05\/logo-neural-1.png\",\"contentUrl\":\"https:\/\/www.neuraldesigner.com\/wp-content\/uploads\/2023\/05\/logo-neural-1.png\",\"width\":1024,\"height\":223,\"caption\":\"Neural Designer\"},\"image\":{\"@id\":\"https:\/\/www.neuraldesigner.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/NeuralDesigner\",\"https:\/\/es.linkedin.com\/showcase\/neuraldesigner\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Classify asteroid orbits using machine learning","description":"Build a machine learning model to classify asteroid orbits according to Amor, Apollo, and Aten (AMO, APO, and ATE) orbit classes.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.neuraldesigner.com\/learning\/examples\/orbit-class\/","og_locale":"en_US","og_type":"article","og_title":"Asteroid orbit machine learning example","og_description":"In this example, we develop a classification method for predicting orbit class.","og_url":"https:\/\/www.neuraldesigner.com\/learning\/examples\/orbit-class\/","og_site_name":"Neural Designer","article_modified_time":"2025-10-06T08:36:34+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/www.neuraldesigner.com\/wp-content\/uploads\/2023\/06\/orbit.webp","type":"image\/webp"}],"twitter_card":"summary_large_image","twitter_title":"Asteroid orbit machine learning example","twitter_description":"In this example, we develop a classification method for predicting orbit class.","twitter_site":"@NeuralDesigner","twitter_misc":{"Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.neuraldesigner.com\/learning\/examples\/orbit-class\/","url":"https:\/\/www.neuraldesigner.com\/learning\/examples\/orbit-class\/","name":"Classify asteroid orbits using machine learning","isPartOf":{"@id":"https:\/\/www.neuraldesigner.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.neuraldesigner.com\/learning\/examples\/orbit-class\/#primaryimage"},"image":{"@id":"https:\/\/www.neuraldesigner.com\/learning\/examples\/orbit-class\/#primaryimage"},"thumbnailUrl":"https:\/\/www.neuraldesigner.com\/wp-content\/uploads\/2023\/06\/orbit.webp","datePublished":"2023-08-31T11:12:58+00:00","dateModified":"2025-10-06T08:36:34+00:00","description":"Build a machine learning model to classify asteroid orbits according to Amor, Apollo, and Aten (AMO, APO, and ATE) orbit classes.","breadcrumb":{"@id":"https:\/\/www.neuraldesigner.com\/learning\/examples\/orbit-class\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.neuraldesigner.com\/learning\/examples\/orbit-class\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.neuraldesigner.com\/learning\/examples\/orbit-class\/#primaryimage","url":"https:\/\/www.neuraldesigner.com\/wp-content\/uploads\/2023\/06\/orbit.webp","contentUrl":"https:\/\/www.neuraldesigner.com\/wp-content\/uploads\/2023\/06\/orbit.webp","width":1200,"height":628},{"@type":"BreadcrumbList","@id":"https:\/\/www.neuraldesigner.com\/learning\/examples\/orbit-class\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.neuraldesigner.com\/"},{"@type":"ListItem","position":2,"name":"Learning","item":"https:\/\/www.neuraldesigner.com\/learning\/"},{"@type":"ListItem","position":3,"name":"Classify asteroid orbits using machine learning"}]},{"@type":"WebSite","@id":"https:\/\/www.neuraldesigner.com\/#website","url":"https:\/\/www.neuraldesigner.com\/","name":"Neural Designer","description":"Explanable AI Platform","publisher":{"@id":"https:\/\/www.neuraldesigner.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.neuraldesigner.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.neuraldesigner.com\/#organization","name":"Neural Designer","url":"https:\/\/www.neuraldesigner.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.neuraldesigner.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.neuraldesigner.com\/wp-content\/uploads\/2023\/05\/logo-neural-1.png","contentUrl":"https:\/\/www.neuraldesigner.com\/wp-content\/uploads\/2023\/05\/logo-neural-1.png","width":1024,"height":223,"caption":"Neural Designer"},"image":{"@id":"https:\/\/www.neuraldesigner.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/NeuralDesigner","https:\/\/es.linkedin.com\/showcase\/neuraldesigner\/"]}]}},"_links":{"self":[{"href":"https:\/\/www.neuraldesigner.com\/api\/wp\/v2\/learning\/3511","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.neuraldesigner.com\/api\/wp\/v2\/learning"}],"about":[{"href":"https:\/\/www.neuraldesigner.com\/api\/wp\/v2\/types\/learning"}],"author":[{"embeddable":true,"href":"https:\/\/www.neuraldesigner.com\/api\/wp\/v2\/users\/13"}],"version-history":[{"count":0,"href":"https:\/\/www.neuraldesigner.com\/api\/wp\/v2\/learning\/3511\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.neuraldesigner.com\/api\/wp\/v2\/media\/1778"}],"wp:attachment":[{"href":"https:\/\/www.neuraldesigner.com\/api\/wp\/v2\/media?parent=3511"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.neuraldesigner.com\/api\/wp\/v2\/categories?post=3511"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.neuraldesigner.com\/api\/wp\/v2\/tags?post=3511"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}