研一的科研感悟
前两天终于跑完了所有的实测数据,结果还行,后期还会修修补补,但总体的思路和框架基本就这样了。虽然我主要做研究的时间就半年,但这半年时间真的让人难忘,不断的实验,不断的思考、不断的学习、不断的汇报,会犯一些真想骂自己的错误,也会取得一些令人惊喜的进步。
我对我半年研究之路做了简单的总结:我的科研十分符合“否定之否定原理”,新的想法对旧的想法既批判又继承,一种螺旋上升的状态。庆幸的是能够上升,虽然身心颇受煎熬。思考的严谨性、适当的取舍和内心的平静十分的重要,当然不可能一开始就把研究考虑的十分详细、也不能考虑的很远,个人的知识基础以及对该事物的了解程度就已经决定了。但是至少在我们走的这一步,就该思考的详细一点,除了用文字列举一二三,最好把我们所在做的东西画图、并能公式进行表达,否则易出错。研究中有很多问题要解决的,我无法做到全部解决,着力解决主要问题,次要问题可以适当舍弃,因此我也认识到随便说几个月完成科研工作是莽撞的。想到的好方法原来不过如此、遇到困难过几天又解决了、研究出现纰漏、结果还不错,这些真让人的心情跌宕起伏,还是得以平常心去对待。道阻且长,唯有主动出击。
哈哈,同志们,享受每一天吧。我导师说分享很重要:附上一段完整的散点图代码,带有R2,RMSE,和1:1线,拿来即用:
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score, mean_squared_error
input_file = r"E:\formal\gap01.xlsx"
df = pd.read_excel(input_file, engine="openpyxl", skiprows=2, header=None)
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['font.family'] = 'Times New Roman'
figure = plt.figure()
x = df.loc[:, 5]
y = df.loc[:, 14]
plt.scatter(x, y, s=35, c=(215/255,25/255,28/255))#alpha设置透明度
plt.gca().set_aspect('equal')
plt.xlim(0, 0.3)
plt.ylim(0, 0.3)
plt.plot(plt.xlim(), plt.ylim(), ls="--", c=(253/255,174/255,97/255), label="1:1 line")
# 趋势线拟合
regressor = LinearRegression()
x = x.values.reshape(-1, 1)
regressor.fit(x, y)
y_pred = regressor.predict(x)
plt.plot(x, y_pred, c="#1a9641", label='Trendline')
plt.legend(loc='best', fontsize=13)
# 设置 x 轴和 y 轴标签步长
x_ticks = np.arange(0,0.4, 0.1)#设置步长
y_ticks = np.arange(0,0.4, 0.1)
plt.xticks(x_ticks, fontsize=12)
plt.yticks(y_ticks, fontsize=12)
plt.xlabel('Measured gap fraction', fontsize=15)
plt.ylabel('Estimated gap fraction', fontsize=15)
plt.title('understory gap fraction', fontsize=20)
# 计算 R² 和 RMSE
r1 = r2_score(y, y_pred)
rmse1 = np.sqrt(mean_squared_error(y, y_pred))
equation = f'$y = {regressor.coef_[0]:.2f}x+{regressor.intercept_:.2f}$'
plt.text(0.15, 0.08, f'$R^2$= {r1:.2f}\nRMSE= {rmse1:.2f}\n{equation}', fontsize=14, ha='left', va='top', color="black")
plt.show()