importmatplotlib.pyplotaspltimportnumpyasnpimportpandasaspdnp.random.seed(42)data=pd.DataFrame(np.random.rand(50,4),columns=['Feature 1','Feature 2','Feature 3','Feature 4'])# Number of featuresnum_features=len(data.columns)# Create figurefig,axes=plt.subplots(num_features,num_features,figsize=(10,10))# Loop through each pair of featuresforiinrange(num_features):forjinrange(num_features):ax=axes[i,j]ifi==j:# Plot histogram on the diagonalax.hist(data.iloc[:,i],bins=10,color="skyblue",edgecolor="black")else:# Scatter plotx=data.iloc[:,j]y=data.iloc[:,i]ax.scatter(x,y,alpha=0.7,s=10,color="blue")# Add Regression Linem,b=np.polyfit(x,y,1)# Linear regressionax.plot(x,m*x+b,color="red",linewidth=1)# Labelsifj==0:ax.set_ylabel(data.columns[i],fontsize=10)ifi==num_features-1:ax.set_xlabel(data.columns[j],fontsize=10)# Hide ticks for cleaner lookax.set_xticks([])ax.set_yticks([])# Adjust layoutplt.tight_layout()plt.show()