Skip to content

Commit f48a2d7

Browse files
committed
Added Neural Network Regression in Python
1 parent c6006a7 commit f48a2d7

File tree

2 files changed

+99
-0
lines changed

2 files changed

+99
-0
lines changed
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
# Neural Network Regression in Python
2+
3+
## Overview
4+
5+
Neural Network Regression is a type of machine learning algorithm used to predict continuous values. Unlike classification, where the goal is to predict a category or class, regression aims to predict a specific numerical value. Neural networks are particularly powerful for regression tasks when dealing with complex, non-linear relationships in data.
6+
7+
## When to Use Neural Network Regression
8+
9+
### Suitable Scenarios
10+
11+
1. **Complex Relationships**: When the relationship between input features and the target variable is non-linear and complex.
12+
2. **Large Datasets**: When you have a large dataset that can support the training of a neural network.
13+
3. **Feature Engineering**: When you can leverage the feature extraction capabilities of neural networks, especially in domains like image or text data.
14+
15+
### Unsuitable Scenarios
16+
17+
1. **Small Datasets**: Neural networks require substantial amounts of data to train effectively. For small datasets, simpler models like linear regression or decision trees might perform better.
18+
2. **Real-time Predictions**: If low-latency predictions are required and computational resources are limited, simpler models might be more efficient.
19+
3. **Interpretability**: If model interpretability is crucial, neural networks might not be the best choice due to their "black-box" nature.
20+
21+
## Implementing Neural Network Regression in Python
22+
23+
We'll use TensorFlow and Keras, popular libraries for building and training neural networks in Python.
24+
25+
### Step-by-Step Implementation
26+
27+
1. **Import Libraries**
28+
29+
```python
30+
import numpy as np
31+
import pandas as pd
32+
from sklearn.model_selection import train_test_split
33+
from sklearn.preprocessing import StandardScaler
34+
from tensorflow.keras.models import Sequential
35+
from tensorflow.keras.layers import Dense
36+
from tensorflow.keras.optimizers import Adam
37+
```
38+
39+
2. **Load and Prepare Data**
40+
41+
For illustration, let's use a synthetic dataset.
42+
43+
```python
44+
# Generate synthetic data
45+
np.random.seed(42)
46+
X = np.random.rand(1000, 3)
47+
y = X[:, 0] * 3 + X[:, 1] * -2 + X[:, 2] * 0.5 + np.random.randn(1000) * 0.1
48+
49+
# Split the data
50+
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
51+
52+
# Standardize the data
53+
scaler = StandardScaler()
54+
X_train = scaler.fit_transform(X_train)
55+
X_test = scaler.transform(X_test)
56+
```
57+
58+
3. **Build the Neural Network Model**
59+
60+
```python
61+
model = Sequential()
62+
model.add(Dense(64, input_dim=X_train.shape[1], activation='relu'))
63+
model.add(Dense(64, activation='relu'))
64+
model.add(Dense(1)) # Output layer for regression
65+
66+
model.compile(optimizer=Adam(learning_rate=0.001), loss='mse', metrics=['mae'])
67+
```
68+
69+
4. **Train the Model**
70+
71+
```python
72+
history = model.fit(X_train, y_train, epochs=100, batch_size=32, validation_split=0.2)
73+
```
74+
75+
5. **Evaluate the Model**
76+
77+
```python
78+
loss, mae = model.evaluate(X_test, y_test)
79+
print(f"Test Mean Absolute Error: {mae}")
80+
```
81+
82+
6. **Make Predictions**
83+
84+
```python
85+
predictions = model.predict(X_test)
86+
```
87+
88+
### Explanation
89+
90+
- **Data Generation and Preparation**: Synthetic data is created and split into training and test sets. The data is standardized to improve the neural network's training efficiency.
91+
- **Model Construction**: A simple feedforward neural network is built using Keras. It consists of two hidden layers with 64 neurons each and ReLU activation functions. The output layer has a single neuron for regression.
92+
- **Training**: The model is trained for 100 epochs with a batch size of 32. The Adam optimizer is used to adjust the weights.
93+
- **Evaluation**: The model's performance is evaluated on the test set, using Mean Absolute Error (MAE) as a metric.
94+
- **Prediction**: Predictions are made on the test data.
95+
96+
## Conclusion
97+
98+
Neural Network Regression is a powerful tool for predicting continuous values, particularly in cases involving complex, non-linear relationships. However, they require large datasets and significant computational resources. For smaller datasets or scenarios requiring model interpretability, simpler models might be preferable. By following the steps outlined, you can build, train, and evaluate a neural network for regression tasks in Python using TensorFlow and Keras.

contrib/machine-learning/index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,4 @@
2020
- [Grid Search](grid-search.md)
2121
- [Transformers](transformers.md)
2222
- [K-nearest neighbor (KNN)](knn.md)
23+
- [Neural network regression](Neural network regression.md)

0 commit comments

Comments
 (0)