You may have read stories like this on Reddit or other sites: "Two weeks ago I couldn't program at all, now, thanks to ChatGPT, I'm a senior software engineer at Google." That is a bit of an exaggeration, but sites like r/ChatGPT often contain quite a bit of AI hype.
I was recently working on using PyTorch to detect change points in time series sequences. I have written about change point detection before: here, here, here, and here. There are numerous methods for detecting regions of change in series data depending on the characteristics of the data. I was interested to see what ChatGPT could contribute.
Change point detection algorithms are traditionally classified as online or offline. Offline methods have the entire data sequence available. Online algorithms process each data point as it arrives. I'm interested in offline change point detection. This paper gives a good overview of some of the common detection methods.
Generating Data
My first step was to generate some data. I used
Bing/ChatGPT. Bing chat uses ChatGPT 4 and also provides search results.
I tried the following prompt to as ChatGPT to provide some code for generating timeseries data.
write python code to generate a time series with 3 regions, each region having a different mean and variance
Here's ChatGPT's response:
Here is a Python code that generates a time series with 3 regions, each region having a different mean and variance:
```python
import numpy as np
import matplotlib.pyplot as plt
# Define the number of data points
n = 1000
# Define the means and variances for each region
means = [0, 5, 10]
variances = [1, 2, 3]
# Generate the time series
ts = np.zeros(n)
for i in range(n):
if i < n//3:
ts[i] = np.random.normal(means[0], variances[0])
elif i < 2*n//3:
ts[i] = np.random.normal(means[1], variances[1])
else:
ts[i] = np.random.normal(means[2], variances[2])
# Plot the time series
plt.plot(ts)
plt.title('Time Series with 3 Regions')
plt.xlabel('Time')
plt.ylabel('Value')
plt.show()
```
In this code, we first define the number of data points `n`, and then define the means and variances for each of the three regions. We then generate the time series by sampling from normal distributions with the specified means and variances for each region. Finally, we plot the time series using `matplotlib`.
I hope this helps!
Source: Conversation with Bing, 9/20/2023
(1) Time Series Analysis in Python – A Comprehensive Guide with Examples. https://www.machinelearningplus.com/time-series/time-series-analysis-python/.
(2) Time series / date functionality — pandas 2.1.0 documentation. https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html.
(3) A Guide to Time Series Visualization with Python 3. https://www.digitalocean.com/community/tutorials/a-guide-to-time-series-visualization-with-python-3.
(4) A Python Library to Generate a Synthetic Time Series Data. https://towardsdatascience.com/tsbngen-a-python-library-to-generate-time-series-data-from-an-arbitrary-dynamic-bayesian-network-4b46e178cd9f.
(5) Complete Guide on Time Series Analysis in Python | Kaggle. https://www.kaggle.com/code/prashant111/complete-guide-on-time-series-analysis-in-python.
(6) undefined. https://raw.githubusercontent.com/selva86/datasets/master/a10.csv.
Not Bad! It works well. I might have used a list comprehension rather than the for loop, but the code is functional and easily understandable and modifiable.
The code produces this plot.
PyTorch for Change Point Detection
After generating some fake data, I next tried to get ChatGPT to write some code using PyTorch to detect change points.
Here was my prompt:
write pytorch code to find change points in a time series
and the result:
Sure! Here's an example of PyTorch code to find change points in a time series:
```python
import torch
import numpy as np
from ruptures.costs import LeastAbsoluteDeviation
from ruptures.model import Binseg
# Generate a random time series
np.random.seed(0)
n_samples, n_features = 500, 1
signal = np.random.randn(n_samples, n_features)
# Define the cost function and the model
cost = LeastAbsoluteDeviation().fit(signal)
model = Binseg(custom_cost=cost).fit(signal)
# Get the change points
change_points = model.predict(n_bkps=2)
print("Change points:", change_points)
```
This code uses the `ruptures` library, which is a Python library for performing offline change point detection⁷. In this example, we generate a random time series and use the `LeastAbsoluteDeviation` cost function with the `Binseg` model to detect change points. The `n_bkps` parameter specifies the number of change points to detect.
Please note that this is just one approach to change point detection in time series data. There are other algorithms and libraries available, depending on your specific requirements and preferences. Feel free to explore other options and adapt the code to your needs.
Let me know if you need any further assistance!
```python
import torch
import numpy as np
from ruptures.costs import LeastAbsoluteDeviation
from ruptures.model import Binseg
# Generate a random time series
np.random.seed(0)
n_samples, n_features = 500, 1
signal = np.random.randn(n_samples, n_features)
# Define the cost function and the model
cost = LeastAbsoluteDeviation().fit(signal)
model = Binseg(custom_cost=cost).fit(signal)
# Get the change points
change_points = model.predict(n_bkps=2)
print("Change points:", change_points)
```
This code uses the `ruptures` library, which is a Python library for performing offline change point detection⁷. In this example, we generate a random time series and use the `LeastAbsoluteDeviation` cost function with the `Binseg` model to detect change points. The `n_bkps` parameter specifies the number of change points to detect.
Please note that this is just one approach to change point detection in time series data. There are other algorithms and libraries available, depending on your specific requirements and preferences. Feel free to explore other options and adapt the code to your needs.
Let me know if you need any further assistance!
Source: Conversation with Bing, 9/16/2023
(1) A Brief Introduction to Change Point Detection using Python. https://techrando.com/2019/08/14/a-brief-introduction-to-change-point-detection-using-python/.
(2) python - Time series change point detection - Stack Overflow. https://stackoverflow.com/questions/69010927/time-series-change-point-detection.
(3) Calculate the accuracy every epoch in PyTorch - Stack Overflow. https://stackoverflow.com/questions/51503851/calculate-the-accuracy-every-epoch-in-pytorch.
(4) GitHub - LEE-SEON-WOO/TSCP2_pytorch: Time Series Change Point Detection .... https://github.com/lee-seon-woo/tscp2_pytorch.
(5) GitHub - timeseriesAI/tsai: Time series Timeseries Deep Learning .... https://github.com/timeseriesAI/tsai.
(6) undefined. https://github.com/deepcharles/ruptures.
(7) changepoint-detection · GitHub Topics · GitHub. https://github.com/topics/changepoint-detection.
(8) GitHub - OctoberChang/klcpd_code: Kernel Change-point Detection with .... https://github.com/OctoberChang/klcpd_code.
(9) GitHub - HolyBayes/TIRE_pytorch: Pytorch implementation of TIRE for .... https://github.com/HolyBayes/TIRE_pytorch.
The code was presented twice. It uses
ruptures, a Python library for off-line change point detection. Ruptures is great library, but
it doesn't use PyTorch. The code loads PyTorch, but doesn't use it.
A more serious problem arises when I tried to run the code. I received this error:
ImportError Traceback (most recent call last)
Cell In[1], line 3
1 import torch
2 import numpy as np
----> 3 from ruptures.costs import LeastAbsoluteDeviation
4 from ruptures.model import Binseg
6 # Generate a random time series
ImportError: cannot import name 'LeastAbsoluteDeviation' from 'ruptures.costs' (/home/bill/mambaforge/envs/nn/lib/python3.11/site-packages/ruptures/costs/__init__.py)
I'm not sure where the line from ruptures.costs import LeastAbsoluteDeviation is coming from. Searching the web for it finds no results. I guess ChatGPT made it up.
Also, this line will create an error:
from ruptures.model import Binseg
ModuleNotFoundError Traceback (most recent call last)
Cell In[2], line 1
----> 1 from ruptures.model import Binseg
ModuleNotFoundError: No module named 'ruptures.model'
I told ChatGPT.
It replied:
I'm sorry to hear that. Could you please provide more details about the error? What is the error message that you are seeing? This will help me understand the issue better and provide you with a more accurate solution.
In the meantime, here are some general tips that might help you troubleshoot the issue:
- Check if all the required libraries and dependencies are installed and up-to-date.
- Make sure that the input data is in the correct format and shape.
- Double-check the code for any syntax errors or typos.
- Try running the code on a smaller dataset or with simpler parameters to isolate the issue.
If you can provide more information about the error, I'll be happy to help you further. Let me know!
Source: Conversation with Bing, 9/16/2023
(1) TorchVision Object Detection Finetuning Tutorial — PyTorch Tutorials 2. .... https://pytorch.org/tutorials/intermediate/torchvision_tutorial.html.
(2) Anomaly detection points to LayerNormalization operation for in-place error. https://discuss.pytorch.org/t/anomaly-detection-points-to-layernormalization-operation-for-in-place-error/180372.
(3) Object detection fine tuning model initialisation error - PyTorch Forums. https://discuss.pytorch.org/t/object-detection-fine-tuning-model-initialisation-error/159940.
(4) torch.utils.checkpoint — PyTorch 2.0 documentation. https://pytorch.org/docs/stable/checkpoint.html.
(5) undefined. https://github.com/gautamchitnis/cocoapi.git@cocodataset-master.
I prompted ChatGPT with this query.
There is no function called LeastAbsoluteDeviation in ruptures.cost
Here's what ChatGPT had to say:
I apologize for the confusion earlier. It seems that the `LeastAbsoluteDeviation` function is not available in the `ruptures.costs` module. Instead, you can try using the `Pelt` model with the `l1` cost function to detect change points in your time series data. Here's an example of how you can modify the code:
```python
import torch
import numpy as np
from ruptures.costs import cost_l1
from ruptures.model import Pelt
# Generate a random time series
np.random.seed(0)
n_samples, n_features = 500, 1
signal = np.random.randn(n_samples, n_features)
# Define the cost function and the model
model = Pelt(model="l1").fit(signal)
# Get the change points
change_points = model.predict(pen=10)
print("Change points:", change_points)
```
In this example, we use the `cost_l1` function from the `ruptures.costs` module and the `Pelt` model to detect change points in your time series data. The `pen` parameter specifies the penalty value for the number of change points.
Please note that this is just one approach to change point detection in time series data. There are other algorithms and libraries available, depending on your specific requirements and preferences. Feel free to explore other options and adapt the code to your needs.
Let me know if you need any further assistance!
This code doesn't work either.
ImportError Traceback (most recent call last)
Cell In[9], line 3
1 import torch
2 import numpy as np
----> 3 from ruptures.costs import cost_l1
4 from ruptures.model import Pelt
6 # Generate a random time series
ImportError: cannot import name 'cost_l1' from 'ruptures.costs' (/home/bill/mambaforge/envs/nn/lib/python3.11/site-packages/ruptures/costs/__init__.py)
I fed that error message to ChatGPT and received this reply:
I’m sorry to hear that you’re encountering an error. Based on the error message you provided, it seems that there is an issue with the ruptures library. Specifically, it appears that the cost_l1 function cannot be imported from the ruptures.costs module.
Here are some general tips that might help you troubleshoot the issue:
Make sure that the ruptures library is installed and up-to-date. You can check this by running !pip show ruptures in your Jupyter notebook.
Check if there are any typos or syntax errors in your code. Double-check the spelling of the function name and make sure that it is imported correctly.
Try importing the function directly using from ruptures.costs.least_absolute_deviation import LeastAbsoluteDeviation instead of from ruptures.costs import LeastAbsoluteDeviation.
If none of these solutions work, try uninstalling and reinstalling the ruptures library.
If you can provide more information about the error or your specific use case, I’ll be happy to help you further. Let me know!
I told it:
there is no cost_l1 function in ruptures.cose. The correct function is CostL1
I apologize for the confusion earlier. You are correct, the correct function name in the `ruptures.costs` module is `CostL1`. Here's an updated version of the code:
```python
import torch
import numpy as np
from ruptures.costs import CostL1
from ruptures.model import Pelt
# Generate a random time series
np.random.seed(0)
n_samples, n_features = 500, 1
signal = np.random.randn(n_samples, n_features)
# Define the cost function and the model
cost = CostL1().fit(signal)
model = Pelt(custom_cost=cost).fit(signal)
# Get the change points
change_points = model.predict(pen=10)
print("Change points:", change_points)
```
In this updated code, we use the `CostL1` function from the `ruptures.costs` module and the `Pelt` model to detect change points in your time series data. The `pen` parameter specifies the penalty value for the number of change points.
Please note that this is just one approach to change point detection in time series data. There are other algorithms and libraries available, depending on your specific requirements and preferences. Feel free to explore other options and adapt the code to your needs.
Let me know if you need any further assistance!
```python
import torch
import numpy as np
from ruptures.costs import CostL1
from ruptures.model import Pelt
# Generate a random time series
np.random.seed(0)
n_samples, n_features = 500, 1
signal = np.random.randn(n_samples, n_features)
# Define the cost function and the model
cost = CostL1().fit(signal)
model = Pelt(custom_cost=cost).fit(signal)
# Get the change points
change_points = model.predict(pen=10)
print("Change points:", change_points)
```
In this updated code, we use the `CostL1` function from the `ruptures.costs` module and the `Pelt` model to detect change points in your time series data. The `pen` parameter specifies the penalty value for the number of change points.
Please note that this is just one approach to change point detection in time series data. There are other algorithms and libraries available, depending on your specific requirements and preferences. Feel free to explore other options and adapt the code to your needs.
Let me know if you need any further assistance!
Source: Conversation with Bing, 9/16/2023
(1) TorchVision Object Detection Finetuning Tutorial — PyTorch Tutorials 2. .... https://pytorch.org/tutorials/intermediate/torchvision_tutorial.html.
(2) Object detection fine tuning model initialisation error. https://discuss.pytorch.org/t/object-detection-fine-tuning-model-initialisation-error/159940.
(3) Anomaly detection points to LayerNormalization operation for in-place error. https://discuss.pytorch.org/t/anomaly-detection-points-to-layernormalization-operation-for-in-place-error/180372.
(4) torch.utils.checkpoint — PyTorch 2.0 documentation. https://pytorch.org/docs/stable/checkpoint.html.
(5) pytorch_lightning.ModelCheckpoint not saving model. https://stackoverflow.com/questions/77092260/pytorch-lightning-modelcheckpoint-not-saving-model.
(6) undefined. https://github.com/gautamchitnis/cocoapi.git@cocodataset-master.
(7) unable to import pytorch-lightning - Stack Overflow. https://stackoverflow.com/questions/66505335/unable-to-import-pytorch-lightning.
(8) python - Cannot import Pytorch [WinError 126] The specified module .... https://stackoverflow.com/questions/61488902/cannot-import-pytorch-winerror-126-the-specified-module-could-not-be-found.
(9) Unable to import pytorch_lightning on google colab. https://stackoverflow.com/questions/66538407/unable-to-import-pytorch-lightning-on-google-colab.
(10) python - Import error when importing torch - Stack Overflow. https://stackoverflow.com/questions/49624501/import-error-when-importing-torch.
(11) undefined. https://github.com/PyTorchLightning/pytorch-lightning.
(12) undefined. https://pytorch.org.
This doesn't work.
ModuleNotFoundError Traceback (most recent call last)
Cell In[11], line 4
2 import numpy as np
3 from ruptures.costs import CostL1
----> 4 from ruptures.model import Pelt
6 # Generate a random time series
7 np.random.seed(0)
ModuleNotFoundError: No module named 'ruptures.model'
I gave that error message as a prompt and received another apology.
I’m sorry to hear that you’re encountering an error. Based on the error message you provided, it seems that there is an issue with the ruptures library. Specifically, it appears that the Pelt function cannot be imported from the ruptures.model module.
Here are some general tips that might help you troubleshoot the issue:
Make sure that the ruptures library is installed and up-to-date. You can check this by running !pip show ruptures in your Jupyter notebook.
Check if there are any typos or syntax errors in your code. Double-check the spelling of the function name and make sure that it is imported correctly.
Try importing the function directly using from ruptures.model.pelt import Pelt instead of from ruptures.model import Pelt.
If none of these solutions work, try uninstalling and reinstalling the ruptures library.
If you can provide more information about the error or your specific use case, I’ll be happy to help you further. Let me know!
I used this prompt:
There is no module called ruptures.model. It should be from ruptures import Pelt.
I received this:
An error has occurred. Let's start over.
Everything was lost
That was disappointing. This problem seemed to be chronic with Bing Chat. It kept losing the connection or dying in mid answer.
It looks like ChatGPT was resurrecting some old ruptures code from a previous version. In the end, I couldn't get it to come up with anything workable, even ignoring the fact that it wasn't using PyTorch like I intended.
A Second Attempt
Maybe my prompts were too vague. I tried to be more specific.
write python code to read a csv file containing x and y columns, plot the y variable, use the klcpd library to detect change points in the y variable
klcpd is a module for change point detection in time series.
Here is ChatGPT's response.
Sure! Here's an example Python code that reads a CSV file containing `x` and `y` columns, plots the `y` variable, and uses the **klcpd** library to detect change points in the `y` variable:
```python
import pandas as pd
import matplotlib.pyplot as plt
from klcpd import KL_CPD
# Read the CSV file
df = pd.read_csv('your_file.csv')
# Extract the 'x' and 'y' columns
x = df['x']
y = df['y']
# Plot the 'y' variable
plt.plot(x, y)
plt.xlabel('x')
plt.ylabel('y')
plt.title('Plot of y variable')
# Use KL-CPD to detect change points in 'y'
model = KL_CPD()
change_points = model.detect_change_points(y)
# Print the detected change points
print('Change points:', change_points)
```
Please make sure to replace `'your_file.csv'` with the actual path to your CSV file. Also, ensure that you have installed the **klcpd** library before running this code. You can find more information about the library and its usage in the [official GitHub repository](https://github.com/HolyBayes/klcpd).
Let me know if you need any further assistance!
Source: Conversation with Bing, 9/21/2023
(1) . https://bing.com/search?q=klcpd+library.
(2) Valatie Free Library. https://valatielibrary.net/.
(3) GitHub - HolyBayes/klcpd: PyTorch package for KL-CPD algorithm for .... https://github.com/HolyBayes/klcpd.
(4) King County Library System. https://kcls.org/.
(5) undefined. https://www.linkedin.com/in/artem-ryzhikov-2b6308103/.
(6) undefined. https://www.hse.ru/org/persons/190912317.
(7) Read specific columns from a csv file with csv module?. https://stackoverflow.com/questions/16503560/read-specific-columns-from-a-csv-file-with-csv-module.
(8) coordinates - Python: How to read a text file containing co-ordinates .... https://stackoverflow.com/questions/20735922/python-how-to-read-a-text-file-containing-co-ordinates-in-row-column-format-int.
(9) Visualize data from CSV file in Python - GeeksforGeeks. https://www.geeksforgeeks.org/visualize-data-from-csv-file-in-python/.
(10) Accessing column data from a CSV file in Python. https://stackoverflow.com/questions/17186893/accessing-column-data-from-a-csv-file-in-python.
(11) csv - How to read specific columns and Rows in Python? - Stack Overflow. https://stackoverflow.com/questions/42920792/how-to-read-specific-columns-and-rows-in-python.
This doesn't work, even if the correct file name is supplied.
TypeError Traceback (most recent call last)
Cell In[2], line 19
16 plt.title('Plot of y variable')
18 # Use KL-CPD to detect change points in 'y'
---> 19 model = KL_CPD()
20 change_points = model.detect_change_points(y)
22 # Print the detected change points
TypeError: KL_CPD.__init__() missing 1 required positional argument: 'D'
I gave ChatGPT the error message as prompt. It apologized but it didn't give me much help.
I apologize for the error you encountered. It seems that there was a **TypeError** when initializing the **KL_CPD** model. This error occurs when the required arguments for the model are not provided correctly.
To resolve this issue, please make sure that you have installed the **klcpd** library correctly. You can install it using the following command:
```python
pip install git+https://github.com/HolyBayes/klcpd
```
After installing the library, you need to pass the appropriate arguments to the **KL_CPD** constructor. The required arguments depend on the specific implementation of the **KL_CPD** class you are using. Please refer to the documentation or examples provided by the library to understand how to correctly initialize the model.
If you are still facing issues after following these steps, please provide more details about the error message and any additional information that might be helpful in diagnosing the problem.
I hope this helps! Let me know if you have any further questions.
Source: Conversation with Bing, 9/21/2023
(1) GitHub - HolyBayes/klcpd: PyTorch package for KL-CPD algorithm for .... https://github.com/HolyBayes/klcpd.
(2) Getting errors in running the code with python3 #3 - GitHub. https://github.com/OctoberChang/klcpd_code/issues/3.
(3) OctoberChang/klcpd_code - GitHub. https://github.com/OctoberChang/klcpd_code.
(4) undefined. https://www.linkedin.com/in/artem-ryzhikov-2b6308103/.
(5) undefined. https://www.hse.ru/org/persons/190912317.
At this point, I was the one who was doing the debugging.
My prompt:
the proper method to call KL_CPD is model = KL_CPD(D = 1)
ChatGPT came back with this. It's still incorrect.
I apologize for the confusion. You are correct! The proper method to call the **KL_CPD** model is by passing the required arguments to the constructor. In this case, you need to provide the value of `D` as `1`. Here's the corrected code:
```python
import pandas as pd
import matplotlib.pyplot as plt
from klcpd import KL_CPD
# Read the CSV file
df = pd.read_csv('your_file.csv')
# Extract the 'x' and 'y' columns
x = df['x']
y = df['y']
# Plot the 'y' variable
plt.plot(x, y)
plt.xlabel('x')
plt.ylabel('y')
plt.title('Plot of y variable')
# Use KL-CPD to detect change points in 'y'
model = KL_CPD(D=1)
change_points = model.detect_change_points(y)
# Print the detected change points
print('Change points:', change_points)
'''
Please make sure to replace `'your_file.csv'` with the actual path to your CSV file. If you have any further questions or need additional assistance, feel free to ask!
This also produced an error.
AttributeError Traceback (most recent call last)
Cell In[6], line 20
18 # Use KL-CPD to detect change points in 'y'
19 model = KL_CPD(D = 1)
---> 20 change_points = model.detect_change_points(y)
22 # Print the detected change points
23 print('Change points:', change_points)
File ~/mambaforge/envs/nn/lib/python3.11/site-packages/torch/nn/modules/module.py:1614, in Module.__getattr__(self, name)
1612 if name in modules:
1613 return modules[name]
-> 1614 raise AttributeError("'{}' object has no attribute '{}'".format(
1615 type(self).__name__, name))
AttributeError: 'KL_CPD' object has no attribute 'detect_change_points'
I tried to give ChatGPT the proper syntax. klcpd.model doesn't have a function called detect_change_points. ChatGPT apparently made that one up.
That doesn't work either. The proper line is model.fit(y); change_points = model.predict(y). Plot y and the change points
I got this back.
I apologize for the confusion. You are correct! The proper method to detect change points using the **KL_CPD** model is by calling the `fit` method followed by the `predict` method. Here's the corrected code:
```python
import pandas as pd
import matplotlib.pyplot as plt
from klcpd import KL_CPD
# Read the CSV file
df = pd.read_csv('your_file.csv')
# Extract the 'x' and 'y' columns
x = df['x']
y = df['y']
# Plot the 'y' variable
plt.plot(x, y)
plt.xlabel('x')
plt.ylabel('y')
plt.title('Plot of y variable')
# Use KL-CPD to detect change points in 'y'
model = KL_CPD()
model.fit(y)
change_points = model.predict(y)
# Plot 'y' and the detected change points
plt.plot(x, y)
plt.plot(x[change_points], y[change_points], 'ro')
plt.show()
```
Please make sure to replace `'your_file.csv'` with the actual path to your CSV file. If you have any further questions or need additional assistance, feel free to ask!
Source: Conversation with Bing, 9/21/2023
(1) GitHub - HolyBayes/klcpd: PyTorch package for KL-CPD algorithm for .... https://github.com/HolyBayes/klcpd.
(2) Getting errors in running the code with python3 #3 - GitHub. https://github.com/OctoberChang/klcpd_code/issues/3.
(3) OctoberChang/klcpd_code - GitHub. https://github.com/OctoberChang/klcpd_code.
(4) undefined. https://www.linkedin.com/in/artem-ryzhikov-2b6308103/.
(5) undefined. https://www.hse.ru/org/persons/190912317.
We're now going in circles. The error model = KL_CPD() is back. There is at least one other error. plt.plot(x[change_points], y[change_points], 'ro') will fail because change_points is not an integer and thus not a proper index into x.
At this point, I gave up. It was much harder to try and debug ChatGPT code than it would have been to simply write it myself with a little help from searching the web for the correct syntax.
Here's the debugged code, starting from ChatGPT's version. Debugged by me.
import pandas as pd
import matplotlib.pyplot as plt
from klcpd import KL_CPD
import torch
# Read the CSV file
df = pd.read_csv('data/ts_chatgpt.csv')
# Extract the 'x' and 'y' columns
x = df['x']
y = df['y']
# Plot the 'y' variable
plt.plot(x, y)
plt.xlabel('x')
plt.ylabel('y')
plt.title('Plot of y variable')
# Use KL-CPD to detect change points in 'y'
model = KL_CPD(D = 1).to(torch.device('cuda'))
model.fit(y)
change_points = model.predict(y)
# Plot 'y' and the detected change points
plt.plot(x, y)
plt.plot(change_points, 'ro')
plt.show()
# Print the detected change points
#print('Change points:', change_points)
It produces this plot.
You can see it finds the change points, so it's possible to find change points with
klcpd.
Programming with ChatGPT seems like pair programming with a very obtuse junior developer. Maybe. I'm just not good at prompts. ChatGPT did OK with a simple task like generating some false data. It didn't help at all with the problem of change point detection.
I think I'll give
GitHub Co-Pilot a try and see if it is any easier to use.