Least Squares can be used to fit the following power curve to given data points.
$y=ax^b$ where $a,b$ are constants to be determined by the fitting process as seen here.
Is there a way to fit $y=a\left(x-c\right)^b$ to given data points? where $a,b,c$ are constants to be determined by the fitting process.
Let $\{(x_1,y_1),\ldots,(x_n,y_n)\}$ be your training points.
I think you have two options:
1- Linearizing the log function (as Jean-Claude Arbaut suggests in the comments).
2- Coordinate descent.
I explain the coordinate descent approach in the following:
$$y=a(x-c)^b$$ $$\log y=\log a+b\log(x-c)$$
If you knew $c$, you would let $\theta=\left[ \begin{array}{c} \log a\\ b\end{array} \right]$, $Y=\left[ \begin{array}{c} \log y_1\\ \vdots\\ \log y_n\end{array} \right]$,$X=\left[ \begin{array}{cc} 1 & \log (x_1-c)\\ \vdots\\ 1 & \log (x_n-c)\end{array} \right]$. The you will have $Y=X\theta$, which has a closed-form solution for $\theta$ by least-squares:
$$\theta=(X^TX+\lambda I)^{-1}X^TY$$ (If you have many points you can safely set $\lambda=0$)
You solve for $a$ and $b$ (i.e. $a=e^{\theta_1}$ and $b=\theta_2$), then substitute for each sample: $$y_i=a(x_i-c)^b\Rightarrow c=\frac{1}{n}\sum_{i=1}^n x_i-(y_i/a)^{1/b}$$
Now a coordinate descent algorithm works in the following way:
I hope it helps.
Here is a short Matlab code that verifies it: