<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def optimize_feature_power(df, output_column_name=None, exponents=[2., 1., .8, .5, .25, .1, .01]):
 """ Plot the correlation coefficient for various exponential scalings of input features x10 sq sqrt power 2.00 -0.08 1.00 0.83 1.00 1.00 -0.08 0.97 0.80 1.00 0.90 0.99 0.50 0.97 0.83 1.00 0.25 0.93 0.76 0.99 0.10 0.89 0.71 0.97 0.01 0.86 0.67 0.95 Returns: DataFrame: columns are the input_columns from the source dataframe (df) rows are correlation with output for each attempted exponent used to scale the input features """

    output_column_name = list(df.columns)[-1] if output_column_name is None else output_column_name
    input_column_names = [colname for colname in df.columns if output_column_name != colname]
    results = np.zeros((len(exponents), len(input_column_names)))
    for rownum, exponent in enumerate(exponents):
        for colnum, column_name in enumerate(input_column_names):
            results[rownum, colnum] = (df[output_column_name] ** exponent).corr(df[column_name])
    results = pd.DataFrame(results, columns=input_column_names, index=pd.Series(exponents, name='power'))
    # results.plot(logx=True)
    return results