# Price prediction based on historic data

Im new to ML. I'm trying to predict if a new Music Album will exceed X amount of dollars in Sales. I'm looking to build a model to go only after potential best sellers. I do have historic data for Music Sales from 2010 till 2016. I have many signals:

• Music Genre
• Music Band/Artist name
• Label
• Year released
• Country of origin
• Part of a Series/Volume... etc.
• Sales per month

What type of ML problem is this one?

• Please give your question a better title - half the questions on here could have that title. Feb 7, 2017 at 8:10
• what can the classifier learn from time series data? certain albulums sold better than others during a certain time of year. certain genre are becoming more popular over time. certain artists are becoming more popular over time Aug 11, 2022 at 21:59

There are two broad classes of problems in machine learning, classification and regression. As in this answer, Regression involves estimating or predicting a response (the dependent variable is continuous). Classification is identifying group membership (the dependent variable is discrete).

Your problem is a regression problem, you must try to estimate the real number of sales. You can look here for a similar problem and techniques to solve it.

• As I add more and more variables, is this a Linear regression problem? Feb 8, 2017 at 2:26
• In a linear regression problem, the dependence between the variables is linear. If you add more variables this doesn't mean the dependence becomes linear, however you could add a set of variables that have a linear relation with the dependent variable. You should look at en.wikipedia.org/wiki/Feature_engineering for a discussion of how to deal with variables (features) Feb 8, 2017 at 15:59

you can use trend data for sales in the past to predict future trends using forecasting. build an accumulative dataframe of price then use ARIMA to forecast

print("Predicted Price pct change")
def plotARMA(df_accumulative,ax,label):
result=df_accumulative
result=result.rolling(window=45).mean().dropna()
mod = sm.tsa.arima.ARIMA(result, order=(2,0,0))
res = mod.fit()
# Plot the original series and the forecasted series
#res.plot_predict(start=0, end=400)
df_accumulative.plot(ax=ax,label=label)
res.predict().plot(ax=ax,label=label)

fig,ax = plt.subplots(figsize=(20,20))
plotARMA(df['close_accum'] ,ax,"Tesla")
plt.legend(fontsize=8)
plt.title("ARMA")
plt.show()